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

标签 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. 如何访问假设的当前行及其列的值?
  2. 触发器会执行触发器运行删除查询吗?

最佳答案

您可以使用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

Both the WHEN clause and the trigger actions may access elements of the row being inserted, deleted or updated using references of the form "NEW.column-name" and "OLD.column-name", where column-name is the name of a column from the table that the trigger is associated with. OLD and NEW references may only be used in triggers on events for which they are relevant, as follows:

INSERT NEW references are valid

UPDATE NEW and OLD references are valid

DELETE OLD references are valid

关于android - 如何使用删除触发器删除同一个表中的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45860089/

相关文章:

sqlite - "unescaped "字符”将文本数据导入SQLite时

python - Python 中 sqlite3 的交集

android - 当抽屉导航打开时将 mainActivity 推到一边

android - 想要在 Android 文本字段中显示上次使用的值

ruby-on-rails - 将 Sqlite3 更改为 Postgresql Rails

python - 使用 SQLite 作为键 :value store

sqlite - sqlite结果中的表名

java - Android:抽屉导航布局动态更改图标

android - 小部件应显示实际偏好

android - 使用 GIF 和 Glide 库创建动画启动