Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
View SQLite:如何启用从触发器修改的行数计数_View_Triggers_Sqlite - Fatal编程技术网

View 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

是否有任何方法可以对在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 
    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()