如何使用删除触发器删除同一表中的行?

时间:2017-08-24 11:10:00

标签: android sqlite

鉴于下表。

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 。我想要的是随后删除条件成立的同一个表中的其他一些行。

我有两个问题:

  1. 如何访问假设的currentrow及其列的值?
  2. 是否会触发执行trigger-run-delete-query?

1 个答案:

答案 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引用有效