我有两个表(ab)。问题很简单:我想检测何时在表b中插入一行,然后对表a执行特定查询。是否可以在SQL中执行此操作,还是需要在Java中执行此操作?

情况:

CREATE TABLE `a` (
`id` INT NOT NULL AUTO_INCREMENT,
`hasb` BOOLEAN NOT NULL,
...
PRIMARY KEY ( `id` )
);

CREATE TABLE `b` (
`id` INT NOT NULL AUTO_INCREMENT,
...
`a` INT NOT NULL,
PRIMARY KEY ( `id` ),
FOREIGN KEY ( `a` ) REFERENCES `a` ( `id` ) ON DELETE CASCADE,
);


如果在表b中插入一行,则我想确保hasb中相应行中的a设置为true。删除表b中的行时,我不想将其设置回false。

最佳答案

您可以使用以下trigger来做到这一点:

CREATE TRIGGER ins_b AFTER INSERT ON b
FOR EACH ROW
BEGIN
  UPDATE a
  SET hasb = true
  WHERE id = NEW.a;
END;


请参见demo

10-07 19:33
查看更多