sqlite的触发器,使“没有这样的列”异常(sqlite trigger causes “no s

2019-11-03 22:20发布

我与SQL触发器一个新手,我得到什么似乎是一个简单的例子,一个ESQLiteException。 当我尝试在现有行中修改“memberTag”专栏中,我得到的异常“没有这样的列:memberTag”。 如果我放弃了扳机,异常消失和行得到更新。

我使用SQLite和我使用的是“SQLite的专家个人”应用程序做到这一点实验。

我有这个表:

CREATE TABLE [znode] (
  [description] CHAR NOT NULL, 
  [memberTag] CHAR);

这触发:

CREATE TRIGGER [memberTagTrigger]
AFTER UPDATE
ON [znode]
FOR EACH ROW
WHEN length(memberTag)=0
BEGIN
update znode
  set memberTag = null;
END;

我更新的实验数据是这样的:

description  memberTag
one          x
two          (null)

当我尝试“Y”使用SQLite专家个人改变(空),它会抛出异常。

Answer 1:

问题是WHEN子句中:数据库不知道在哪里memberTag从何而来,因为有两个可能的行,旧的和新的。

二者必选其一OLD.memberTagNEW.memberTag

(还有一个问题:该更新将改变所有表中的行,因为你忘了WHERE子句。)



文章来源: sqlite trigger causes “no such column” exception