2011-01-08 18 views
0

Gibt es eine Möglichkeit, UPDATE items SET qty=10 WHERE **unique key** anstelle von UPDATE items SET qty=10 WHERE userID=1 AND listID=10 and itemID=100 in der folgenden Tabelle zu sagen?MySQL Update eindeutiger Index

CREATE TABLE IF NOT EXISTS `items` (
    `userID` int(20) NOT NULL, 
    `listID` int(20) NOT NULL, 
    `itemID` int(20) NOT NULL, 
    `qty` int(10) NOT NULL, 
    UNIQUE KEY `unique` (`userID`,`listID`,`itemID`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; 
+0

Was möchten Sie tun? Sie möchten den eindeutigen Schlüssel für eine Zeile ändern ODER den eindeutigen Schlüssel der gesamten Tabelle ändern? –

+0

@Nylons Lächeln, ich habe meine Frage aktualisiert, da es keinen Sinn machte – afarazit

+0

Danke für die Klarstellung –

Antwort

1

Ich bin nicht 100% sicher, was Sie fragen, aber wenn Sie wissen wollen, ob Sie den eindeutigen Index in der WHERE-Klausel nennen können und eine Art von einzelnen kombinierten Wert der die Zeile finden liefern du willst, die Antwort ist nein. Wenn Sie den Index verwenden möchten, müssen Sie die drei separaten Spaltenwerte wie in Ihrem Beispiel angeben und MySQL herausfinden lassen, ob dies der beste zu verwendende Index ist (in diesem Fall ist die Antwort ja).

0

Der einzige Weg, ich weiß, ist:

UPDATE items 
SET qty=10 
WHERE (userID, listID, itemID) = (1, 10, 100) 

Ist das, was Sie suchen?

Die Syntax entspricht der, die verwendet, nur ein bisschen kompakter. Es garantiert nicht, dass der Index verwendet wird, obwohl dies wahrscheinlich ist, entweder mit dieser oder Ihrer Syntax.

Verwandte Themen