INSERT und UPDATE in einer Abfrage, MYSQL
Habe ich ein einfaches INSERT-Abfrage, die ausgeführt wird, auf das Ereignis click einer Schaltfläche, bekommt dieser Variablen und fügt Sie in order
Tabelle.
Ich würde auch gerne UPDATE meine bands
Tabelle zu reduzieren den Bestand um 1, bis es 0 erreicht, dann zeigen Sie null-oder verkauft, anstatt zu gehen in den negativen eg: -6
wissen, welche band ausgewählt, die ich verwenden kann :
WHERE Band_id = $Band_id");
in der gleichen Anweisung.
den aktuellen INSERT sieht wie folgt aus :
"INSERT INTO orders (band_id,user_id,user_name,band_name,band_venue) VALUES('$Band_id', '$user_id', '$user_name', '$name', '$venue')";
Abschluss
Ändern zu müssen meine INSERT -, UPDATE auch bei der überprüfung, dass Ihr das aktuell ausgewählte band.
ANTWORT ÜBERPRÜFEN
diese Lösung wurde wunderbar zur Verfügung gestellt, und es macht Sinn, aber im nicht ganz gut genug, um zu verstehen, warum Ihr nicht mehr richtig funktionieren.
$sql = "INSERT INTO orders (band_id,user_id,user_name,band_name,band_venue) VALUES('$Band_id', '$user_id', '$user_name', '$name', '$venue')";
$sql_create ="CREATE TRIGGER tg_ai_orders
AFTER INSERT ON orders
FOR EACH ROW
UPDATE bands
SET stock = stock - 1
WHERE band_id = NEW.band_id";
$sql_deleat = "CREATE TRIGGER tg_ad_orders
AFTER DELETE ON orders
FOR EACH ROW
UPDATE bands
SET stock = stock + 1
WHERE band_id = OLD.band_id";
mysql_query ($sql, $sql_deleat, $sql_create, $linkme)
or die ("could not add to database");
Können Sie zwei separate Abfragen und wickeln Sie Sie in einer Transaktion
Ok fantastisch, wie würde ich einen trigger verwenden oder wickeln Sie Sie in einer Transaktion
InformationsquelleAutor Beep | 2014-01-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie gehen mit einem trigger-Ansatz wählen, dann benötigen Sie zwei Trigger (für insert-und delete)
Hier ist SQLFiddle demo
Was du tust ist nicht richtig. Zunächst müssen Sie, um Trigger erstellt, bevor Sie irgendwelche insert-oder delete-Anweisungen für Tabelle "Bestellungen". Zweitens führen Sie beide
CREATE TRIGGER ...
Aussagen einfach in den mysql-Kommandozeilen-client ist da man muss es nur einmal. Drittens Ihremysql_query()
nennen ist falsch, denn es akzeptiert nur zwei Parameter: einen query-string und einen optionalen link-id. Wenn Sie wollen, zu erstellen Sie Ihre Trigger von php, müssen Sie führen jede Abfrage ein zu einer Zeit.Ok, ich bin ein bisschen verwirrt, aber wissen wollen, wie Sie dies tun, so il versuchen und umzusetzen.
Was genau bist du verwirrt? Sie Trigger erstellen einmal in der gleichen Weise, wie Sie Tabellen erstellen. Und dann Mach einfach deine Einfügungen und Löschungen von Ihrer Anwendung aus client-code wie gewohnt.
Ok, also erstellen von Triggern in myphpadmin, dann die insert-und delete-Anweisung auf php-Ende.
InformationsquelleAutor peterm