View SQLite:如何启用从触发器修改的行数计数
是否有任何方法可以对在SQLite中触发修改的行进行计数 我知道它是禁用的,我理解为什么,但我能以某种方式启用它吗View SQLite:如何启用从触发器修改的行数计数,view,triggers,sqlite,View,Triggers,Sqlite,是否有任何方法可以对在SQLite中触发修改的行进行计数 我知道它是禁用的,我理解为什么,但我能以某种方式启用它吗 CREATE TABLE Users_data ( Id INTEGER PRIMARY KEY AUTOINCREMENT, Deleted BOOLEAN DEFAULT (0), Name STRING ); CREATE VIEW Users AS SELECT Id, Name FROM Users_data WHE
CREATE TABLE Users_data (
Id INTEGER PRIMARY KEY AUTOINCREMENT,
Deleted BOOLEAN DEFAULT (0),
Name STRING
);
CREATE VIEW Users AS
SELECT Id, Name
FROM Users_data
WHERE Deleted = 0;
CREATE TRIGGER UsersDelete2UsersData
INSTEAD OF DELETE
ON Users
FOR EACH ROW
BEGIN
UPDATE Users_data SET Deleted = 1 WHERE Id = OLD.Id;
END;
-- etc for insert & update
然后从用户中删除像'foo'/*这样的名称甚至不需要'Id=1'*/代码>工作正常,但正如文档所说,修改的行数始终为零
(我无法修改我的DAL以自动添加“where Deleted=0”,因此备份计划是删除表用户,并在用户表上触发“on delete”,而不显示任何视图,但我必须继续跟踪FK(例如,当有人从FK表中删除时该怎么办),等等…)
编辑:返回的数字用于检查数据库并发性
Edit2:更清楚地说:正如我所说的,我不能修改我的DAL(实体框架6),因此首选答案应该按照以下伪代码操作:int-affectedRow=query(“从用户名中删除,如'foo';”)。Execute()代码>
这一切都是关于SQLite“查看时触发”行为的。请改用:
此函数返回自数据库连接打开以来所有INSERT、UPDATE或DELETE语句插入、修改或删除的行总数,包括作为触发器程序一部分执行的行数
它在sqlite3中是不可能的(2015年)
基本上,我是在寻找而不是带有返回函数的视图上的触发器,这在sqlite中是不受支持的
顺便说一句,postgresql(我相信其他一些完整的db服务器)可以做到这一点。+1,但我不能接受答案,(我不认为我的问题很清楚,所以我会编辑它)正如我所说,我不能修改我的DAL,所以我需要(伪代码)int-affectedRow=query(“从名为'foo'的用户中删除”)。Execute()代码>