首页 > 解决方案 > Sqlite:可以使用随机名称(或没有名称)创建触发器吗?

问题描述

我需要动态创建触发器,以后不需要删除它们。所以,我需要一个代码来做到这一点。

可能的

CREATE TRIGGER random() BEFORE INSERT... (with random name)

或者

CREATE TRIGGER BEFORE INSERT... (without name)

我可以在 sqlite shell 中执行此操作吗?我知道,这是不好的做法,但它是实验。

谢谢。

标签: sqlitetriggers

解决方案


恐怕这是不可能的。根据文档,trigger-name是一个原子句法单元(从小写可以看出,在圆角矩形中),从某种意义上说,它不能通过评估复杂的表达式来构造。您只能在此处输入文字(顺便说一句,请参见此处table-name此处)。index-name

相反,您可以做的是动态构造整个查询字符串,然后再将其传递给 SQLite。例如,如果您通过 Python 与 SQLite 交互,那么您可以编写如下内容:

tableName = "someRandomString" 
db.execute("CREATE TABLE " + tableName + " (A INT, B TEXT)")

或者,如果您使用的是 Windows 命令提示符:

set tableName=someRandomString
sqlite3.exe test.sqlite "CREATE TABLE %tableName% (A INT, B TEXT)"

我知道你问的是触发器,而不是表,但从你的问题的角度来看,它基本上是一样的,而且表创建语法更短。


推荐阅读