mysql - sql触发两个表不为空

标签 mysql sql jsp triggers

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/

相关文章:

mysql - 在MySQL数据库中查找特殊字符

php - 选择一些包含特定 INT 的 SQL 行

sql - 在 SQLite 中处理表情符号

sql - 我怎样才能快速删除 postgres 中的行?

java - 将变量从 servlet 传递到 JSP

java - HTTP 状态 404 错误

php - MYSQL - 从匹配的两个表中获取值

java - 将二进制数据插入 MySQL(没有 PreparedStatement)

java - 加载或实例化 TagLibraryValidator 类失败 | Tomcat 7、Eclipse STS

mysql - 根据现有数据更改列类型和设置值