鉴于下表。
MY_TABLE
CREATE TABLE MY_TABLE (COL_1 VARCHAR, COL_2 VARCHAR);
我创建了以下触发器。
CREATE TRIGGER IF NOT EXIST MY_TRIGGER BEFORE DELETE ON MY_TABLE FOR EACH ROW BEGIN DELETE FROM MY_TABLE WHERE COL_2=currentrow.COL_1
只要删除一行,就会触发MY_TRIGGER 。我想要的是随后删除条件成立的同一个表中的其他一些行。
我有两个问题:
currentrow
及其列的值?答案 0 :(得分:1)
您可以使用AFTER TRIGGER
并使用old
CREATE TABLE MY_TABLE (COL_1 VARCHAR, COL_2 VARCHAR);
INSERT INTO My_Table VALUES (1,1), (1,2),(2,1),(2,2);
CREATE TRIGGER MY_TRIGGER
AFTER DELETE ON MY_TABLE
FOR EACH ROW
BEGIN
DELETE FROM MY_TABLE
WHERE COL_2=old.COL_1;
END
DELETE FROM My_TABLE WHERE col_1 = 1;
SELECT * FROM My_Table;
-- 2 2
<强> DBFiddle Demo 强>
更多关于CREATE TRIGGER
WHEN子句和触发器操作都可以访问 使用引用插入,删除或更新的行 表格&#34; NEW.column-name&#34;和&#34; OLD.column-name&#34;,其中column-name是 与触发器关联的表中列的名称。 OLD和NEW引用只能用于事件触发器 它们是相关的,如下:
INSERT NEW引用有效
更新新旧参考有效
DELETE OLD引用有效