Dotaz pro UPDATE table s ORDER BY
- newbie
- Člen | 31
NDB. Jde zapsat (jinak než přes query) následující dotaz?
UPDATE `table`
SET `order`=`order` + 1
ORDER BY `order` DESC
Ať zkouším cokoliv, nikdy se mi ORDER do dotazu nevloží. Potřebuji to updatovat zezadu kvůli klíči na sloupci.
$this->getTable()->update(array('order' => new SqlLiteral('`order` + 1')))->order('order DESC');
- duke
- Člen | 650
Správně by bylo nejprve volat order() a až potom update(), nicméně zdá se, že v aktuálním Nette není pro ordered update podpora (order klauzule se v případě update ignoruje).
Pokud používáš MySQL můžeš nicméně pro dočasnou deaktivaci kontroly unikátnosti klíčů použít:
SET unique_checks=0;
-- tady zavoláš UPDATE bez ORDER BY
SET unique_checks=1;
- newbie
- Člen | 31
Bohužel nepomohlo. Stále řve „Integrity constraint violation:
1062 Duplicate entry“. Dělám to kvůli insertu a i když tomu insert
dotazu přidám „ON DUPLICATE KEY UPDATE order
=
order
+1;“ i s nastavením set unique_checks=0 databáze
pořád hlásí stejnou chybu. MySQL i s vypnutím stále kontroluje duplicitu
http://dev.mysql.com/…riables.html#… . No nevadí
vyřešil jsem to neefektivním cyklem :/