我有两个表(a
和b
)。问题很简单:我想检测何时在表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。