ich eine Bibliotheksdatenbank erstellt haben und eine der Tabelle ist transaction
die alsMysql-Trigger oder gespeicherte Prozedur Spalte A auf Aktualisierung der Spalte B in derselben Tabelle zu aktualisieren
CREATE TABLE action
(
t_id int NOT NULL AUTO_INCREMENT,
b_id int,
m_id int,
borrow_timestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
is_returned Bool Default 0,
is_lost Bool,
is_damaged Bool,
return_timestamp TIMESTAMP,
f_id int,
PRIMARY KEY (t_id),
CONSTRAINT fk_bookId FOREIGN KEY (b_id) REFERENCES book(b_id),
CONSTRAINT fk_memberId FOREIGN KEY (m_id) REFERENCES member(m_id),
CONSTRAINT fk_fineId FOREIGN KEY (f_id) REFERENCES fine(f_id)
);
I return_timestamp
arrtibute aktualisieren möchten die mit dem Zeitstempel ist, wenn is_returned
-1
geändert wird, habe ich versucht, diese
CREATE TRIGGER update_return_timestamp
AFTER UPDATE
ON action FOR EACH ROW
BEGIN
DECLARE return_timestamp timestamp;
SELECT is_returned FROM action
IF is_return IS 1
BEGIN
INSERT INTO transaction (return_timestamp) VALUES (now())
END
COMMIT TRANSACTION
END
Wo gehe ich falsch? Oder was ist der richtige Ansatz? Ich weiß nicht, wie man das macht
Funktioniert dieser Code überhaupt? Transaktion ist ein reserviertes Schlüsselwort http://dev.mysql.com/doc/refman/5.7/en/commit.html – e4c5
ja es hat funktioniert .. Ich habe Tabelle mit dem obigen Code – Penny
erstellt, aber bitte erwägen Sie, zu einem vernünftigeren zu ändern Tabellenname. Ihre Trigger-Funktion sieht sehr verwirrend aus, da Sie nicht erkennen können, ob Sie auf die Transaktionstabelle oder das darin enthaltene Transaktionsschlüsselwort verweisen. – e4c5