删除另一个表中的行时的SQLite删除表

时间:2018-05-06 07:46:26

标签: sql sqlite triggers

我一直在努力设置触发器并不断收到错误:

  

“DROP”附近的SQL逻辑错误:语法错误

我有几个表main_table,other_one,other_two等。

  1. main_table 有多个列,其主键列名为 filehash
  2. main_table 的主键列中的值也是其他_ * 表的名称
  3. 因此,如果我使用主键 other_one 删除 main_table 中的行,我希望触发器也可以删除表 other_one

    这是产生错误的触发器语句

    CREATE TRIGGER remove_other_one AFTER DELETE ON 'main_table' 
    WHEN (OLD.filehash == 'other_one')
    BEGIN
     DROP TABLE IF EXISTS 'other_one' ; 
    END remove_other_one;
    

    编辑:我在SQLite数据库浏览器中运行触发器语句时得到的“更全面”错误是:

      

    在“DROP”附近:语法错误:CREATE TRIGGER remove_other_one删除后'main_table'WHER(OLD.filehash =='other_one')BEGIN DROP

1 个答案:

答案 0 :(得分:2)

基于SQLite trigger doc我认为不可能:

enter image description here

在触发器内没有DDL /动态SQL选项。

我想您希望实现PostgreSQL DBFiddle Demo 1 Demo 2

之类的功能

您可以在应用程序代码中处理您的案例。无论如何table per date/customer/hash几乎总是表明设计不佳,从长远来看会导致更多问题。