sqlite - Sqlite:可以使用随机名称(或没有名称)创建触发器吗?
问题描述
我需要动态创建触发器,以后不需要删除它们。所以,我需要一个代码来做到这一点。
可能的
CREATE TRIGGER random() BEFORE INSERT... (with random name)
或者
CREATE TRIGGER BEFORE INSERT... (without name)
我可以在 sqlite shell 中执行此操作吗?我知道,这是不好的做法,但它是实验。
谢谢。
解决方案
恐怕这是不可能的。根据文档,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)"
我知道你问的是触发器,而不是表,但从你的问题的角度来看,它基本上是一样的,而且表创建语法更短。
推荐阅读
- javascript - 我的自定义按钮在@react-google-maps/api 中全屏显示
- html - 为什么 html 实体在我的 Ubuntu Crome 浏览器中出现格式错误,而在 Windows 中是完美的?
- c++ - 使用带有非 utf-8 字符的 `Google Protobuf 3` `Any` 类型,但反序列化时出现错误
- html - 如何制作它在 svg 中的响应路径
- java - Exchanger 的实际用例是什么?
- spring - 在 Spring JPA 中限制并发查询
- rust - TryInto trait 要求更多类型注释,即使所有注释都已到位
- google-places-api - 在 Google Places API(JS 或 REST API,不是 Android)中获取文本描述
- css - 使用 VueJS 自定义工具提示的 CSS 问题
- node.js - 参数未在 discord.js v12 中完全显示