【发布时间】:2016-04-26 05:07:41
【问题描述】:
我创建了一个图书馆数据库,其中一张表是transaction,如下所示
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)
);
我想将return_timestamp arrtibute 更新为is_returned 更改为1 时的时间戳
我试过了
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
我哪里错了?或者什么是正确的方法?我不知道该怎么做
【问题讨论】:
-
这段代码还能用吗?事务是保留关键字dev.mysql.com/doc/refman/5.7/en/commit.html
-
是的,它确实有效.. 我用上面的代码创建了表
-
但请考虑更改为更合理的表名。您的触发器函数看起来很混乱,因为无法分辨您指的是事务表还是其中的事务关键字。
-
对不起,我改成行动了。我希望这不会混淆
标签: mysql stored-procedures triggers