如何使SQLite触发器修改现有字符串

如何使SQLite触发器修改现有字符串,第1张

概述我有一个带有名为“NOTES”的STRING类型列的SQLite表.我想创建一个自动更新NOTES列内容的触发器,但不会完全替换它. 以下不起作用,我没有看到错误,NOTES列永远不会更新. CREATE TRIGGER AlterNote AFTER INSERT ON MyTable FOR EACH ROW BEGIN UPDATE MyTable 我有一个带有名为“NOTES”的STRING类型列的sqlite表.我想创建一个自动更新NOTES列内容的触发器,但不会完全替换它.

以下不起作用,我没有看到错误,NOTES列永远不会更新.

CREATE TRIGGER AlterNote     AFTER INSERT ON Mytable     FOR EACH ROW     BEGIN UPDATE Mytable         SET NOTES= NOTES || 'DATEMODIFIED: ' || date('Now')        WHERE rowID=NEW.rowID;     END;

这确实有效,因为我不再引用我正在更新的内容:

CREATE TRIGGER AlterNote     AFTER INSERT ON Mytable     FOR EACH ROW     BEGIN UPDATE Mytable         SET NOTES= 'DATEMODIFIED: ' || date('Now')        WHERE rowID=NEW.rowID;     END;

有没有办法做到这一点?基本上注意=注意“等等”

解决方法 使用new.ColUMN_name语法.

CREATE TRIGGER AlterNote     AFTER INSERT ON Mytable     FOR EACH ROW     BEGIN UPDATE Mytable         SET NOTES= new.Notes || ',DATEMODIFIED: ' || date('Now')        WHERE rowID=NEW.rowID;     END;

参见示例运行.

sqlite>sqlite> create table mytable(Notes text);sqlite> insert into mytable(Notes) Values('aa');sqlite> select * from mytable;aasqlite> CREATE TRIGGER AlterNote   ...>     AFTER INSERT ON Mytable   ...>     FOR EACH ROW   ...>     BEGIN UPDATE Mytable   ...>         SET NOTES= new.Notes || ',DATEMODIFIED: ' || date('Now')   ...>         WHERE rowID=NEW.rowID;   ...>     END;sqlite>sqlite>sqlite>sqlite>sqlite> insert into mytable(Notes) Values('aa2');sqlite> select * from mytable;aaaa2,DATEMODIFIED: 2014-12-22
总结

以上是内存溢出为你收集整理的如何使SQLite触发器修改现有字符串全部内容,希望文章能够帮你解决如何使SQLite触发器修改现有字符串所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1150277.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存