删除触发器后的SQLite
我有一个表,由于未知原因,从中删除数据。我们认为可能有帮助的步骤之一是在db中写入触发器,并可能在另一个表中记录一些我们认为可能是罪魁祸首的值 到目前为止:删除触发器后的SQLite,sqlite,Sqlite,我有一个表,由于未知原因,从中删除数据。我们认为可能有帮助的步骤之一是在db中写入触发器,并可能在另一个表中记录一些我们认为可能是罪魁祸首的值 到目前为止: 但是这会在新表中提取大量记录。SELECT将两个表uu和up连接起来,但实际上没有对up使用任何连接限制。 因此,您可以得到两个表的笛卡尔积,即每个uu记录与WHERE条件相匹配,每个up记录重复一次 实际上,您没有从该up表中读取任何内容(old.users\u id是独立于该up表的单个值),因此您应该删除它: CREATE TRIGG
但是这会在新表中提取大量记录。SELECT将两个表
uu
和up
连接起来,但实际上没有对up
使用任何连接限制。
因此,您可以得到两个表的笛卡尔积,即每个uu
记录与WHERE条件相匹配,每个up
记录重复一次
实际上,您没有从该up
表中读取任何内容(old.users\u id
是独立于该up
表的单个值),因此您应该删除它:
CREATE TRIGGER audit\u log\u delete
在usvn_用户_至_项目上删除后
每行
开始
插入usvn_审计_删除(emp_id,
emp_名称,
emp_是_adm,
入境日期)
选择用户\u id,
用户登录时,
用户是管理员,
日期时间(“现在”)
来自usvn_用户
其中users\u id=OLD.users\u id;
结束;
实际上,即使这样也会给出多条记录。虽然你的建议绝对有道理,但我想知道如果usvn\u用户。users\u id
是主键,则每个删除的记录不能获得多个记录。
CREATE TRIGGER audit_log_delete after delete on usvn_users_to_projects BEGIN
insert into usvn_audit_delete(emp_id, emp_name, emp_is_adm ,ENTRY_DATE ) select
uu.users_id , uu.users_login ,uu. users_is_admin ,datetime('now') from usvn_users
uu,usvn_users_to_projects up where old.users_id=uu.users_id;
END;