我有两个表:
表 A 具有多列,表 B 具有两列。
在表 A 中插入新行后我想要执行的操作是:
- 检查表 A - 列 C 中插入的值是否已在表 B 中
- 如果表 B中的值不,请将表 A - 列 C 中的数据插入到表 B - 列B 并将表 B - 列 C 的值设置为 1
- 如果表 A - 列 C 中的值已存在于表 B 中,则找到该行并增加表 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/