2010-12-28 14 views
2

Ich habe eine Tabelle: ID, Name, Anzahl, varchar (255)MYSQL automatisch Spalteneinheit um 1 beim Update erhöhen?

Nun, was ich möchte, ist die "Anzahl" jedes Mal erhöhen, dass Zeile in der Tabelle aktualisiert wird.

Natürlich ist der einfache Weg, zuerst zu lesen, den Wert zu erhalten, um 1 in PHP zu erhöhen, dann mit dem neuen Wert zu aktualisieren. ABER!

gibt es einen schnelleren Weg, es zu tun? Gibt es ein System in MySQL, das das ++ automatisch ausführen kann? wie Autoinkrement, aber für eine einzelne Einheit an sich?

Antwort

11

Ich sehe zwei Möglichkeiten:

1.

Genau diese Logik Abfrage

UPDATE `table` SET 
    `data` = 'new_data', 
    `update_counter` = `update_counter` + 1 
WHERE `id` = 123 

2.

zu jedem Update fügen Sie einen Trigger erstellen, die die Arbeit automatisch tun wird:

CREATE TRIGGER trigger_name 
AFTER UPDATE 
ON `table` 
FOR EACH ROW 
    BEGIN 
     UPDATE `table` 
     SET `update_counter` = `update_counter` + 1 
     WHERE `id` = NEW.id 
    END 
+0

Ich wusste nicht, dass ich das tun könnte wie x = x + 1; cool. – David19801

0

können Sie an der trigger

nachschlagen oder

update table set count=count+1 ; 
2

Erstellen Sie einen Trigger mit dem zusätzlichen mysql query tun: http://dev.mysql.com/doc/refman/5.1/en/create-trigger.html

Trigger sind Teile des Codes, die "ausgelöst" werden durch die Datenbank zu bestimmten Ereignissen. In Ihrem Fall wäre das Ereignis ein Update. Viele RDBMS-Support-Trigger, auch MySQL. Der Vorteil der Verwendung eines Triggers ist, dass jedes Stück Ihrer PHP-Logik, das diese Entity aktualisiert, implizit die Triggerlogik aufruft. Sie müssen sich nicht mehr daran erinnern, wenn Sie Ihre Entity von einer anderen PHP-Logik aus aktualisieren möchten .

0
UPDATE table SET name='new value', count=count+1 WHERE id=... 

Ein SQL-Update kann Felder im Datensatz verwenden, die als Datenquelle für das Update selbst aktualisiert werden.