我有两个表:
表A有多列,表B有两列。
在表A中插入新行后,我想做的是:
检查插入表A-C列中的值是否已在表B中
如果该值不在表B中,则将表A-C列中的数据插入表B-B列中,并将表B-C列设置为1
如果表B中已经存在表A-C列中的值,则找到ROW并将表B-C列中的值增加1
希望有人能提供帮助,因为我无法找到解决方案。
感谢您的任何帮助,您可以提供。
最佳答案
以下是Oracle语法,因此有人需要将其转换为MYSQL。
触发器中所做的工作应始终保持在最低水平,因此其他作者
当他们说您可能想找到另一种方法时,这是正确的。
我发现您对列的引用令人困惑,因此我将FK和PK替换为
列名。
CREATE OR REPLACE TRIGGER tablea
AFTER INSERT OR DELETE
ON tablea
REFERENCING NEW AS new OLD AS old
FOR EACH ROW
BEGIN
IF INSERTING
THEN
UPDATE tableb
SET cnt = cnt + 1
WHERE fk = :new.pk;
IF SQL%ROWCOUNT = 0
THEN
INSERT INTO tableb (
fk, cnt
)
VALUES (:new.pk, 1);
END IF;
END IF;
IF DELETING
THEN
UPDATE tableb
SET cnt = cnt - 1
WHERE fk = :old.pk;
END IF;
END;
关于mysql - SQL触发器将值从表A-列A复制到表B-列A IF值在表B中是唯一的,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19862650/