CREATE TRIGGER bookAvailDelete after delete on Auction
for each row
Begin
if (Select count(OLD.isbn) from Auction a > 0)
update Book b
set available =false
where OLD.isbn = isbn
;
我有两个表,Auction 和 Book。拍卖具有引用图书 isbn 主键的 isbn key 。许多拍卖可以指向同一本书,因此我希望此触发器检查每个拍卖删除,看看它是否是该书 isbn 的最后一次拍卖。如果是,则它将 Book 中的“available”键设置为 false。
最佳答案
通常,除非存在性能原因,否则您只需使用以下查询即时计算(而不是存储它):
SELECT b.*
, EXISTS(SELECT * FROM Auction a WHERE a.isbn = b.isbn) AS available
FROM Book b
或(我喜欢的格式):
SELECT b.*, (a.isbn IS NOT NULL) AS available
FROM Book b
LEFT JOIN (SELECT DISTINCT isbn FROM Auction) AS a ON b.isbn = a.isbn
;
关于mysql - sql触发两个表不为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49821550/