我的项目涉及针对 SQLite 数据库运行临时 SQL 语句。我正在寻找一个 JavaScript 正则表达式来解析 ALTER、CREATE 和 UPDATE sql 语句。以下是我正在寻找的示例和结果。
创建索引
CREATE INDEX Christy...
CREATE INDEX IF NOT EXISTS Christy...
CREATE UNIQUE INDEX Christy...
CREATE UNIQUE INDEX IF NOT EXISTS Christy...
结果
a = [..."CREATE", "INDEX", "Christy"]
创建无表约束的表
CREATE TABLE Vicky (id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT,score REAL DEFAULT .10 CHECK (weight<=1));
CREATE TABLE IF NOT EXISTS Vicky (id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT,score REAL DEFAULT .10 CHECK (weight<=1));
结果
a = [..."CREATE", "TABLE", "Vicky", "id INTEGER PRIMARY KEY AUTOINCREMENT","name TEXT","score REAL DEFAULT .10 CHECK (weight<=1)"]
创建具有表约束的表
CREATE TABLE Vicky (id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT,score REAL DEFAULT .10 CHECK (weight<=1)),PRIMARY KEY (id, name));
CREATE TABLE IF NOT EXISTS Vicky (id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT,score REAL DEFAULT .10 CHECK (weight<=1)),PRIMARY KEY (id, name));
结果
a = [..."CREATE", "TABLE", "Vicky", "id INTEGER PRIMARY KEY AUTOINCREMENT","name TEXT","score REAL DEFAULT .10 CHECK (weight<=1)","PRIMARY KEY (id, name))"]
创建触发器
CREATE TRIGGER Arwen...
CREATE TRIGGER IF NOT EXISTS Arwen...
结果
a = [..."CREATE", "TRIGGER", "Arwen"]
创建 View
CREATE VIEW Snow...
CREATE VIEW IF NOT EXISTS Snow...
结果
a = [..."CREATE", "VIEW", "Snow"]
修改表
ALTER TABLE Vicky...
结果
a = [..."ALTER", "TABLE", "Vicky"]
更新表格
UPDATE Vicky...
UPDATE OR ROLLBACK Vicky...
UPDATE OR ABORT Vicky...
UPDATE OR REPLACE Vicky...
UPDATE OR FAIL Vicky...
UPDATE OR IGNORE Vicky...
结果
a = [..."UPDATE", "TABLE", "Vicky"]
以下是这些 SQL 语句的 SQLite 文档的链接。
ALTER TABLE
CREATE INDEX
CREATE TABLE
CREATE TRIGGER
CREATE VIEW
UPDATE
谢谢,
头部数据僵尸
最佳答案
您是否正在尝试解析它们以验证准确性?有效性?安全吗?
解析 SQL 并不容易,我怀疑您能否在具有那么多模式的正则表达式中完成它。也许this link可能有帮助。另见上一个问题 parsing-sql-create-table-statement-using-jquery并注意 TrimQuery 的提及,这可能有助于 JS 实现。
如果您尝试记录这些修改 (CREATE/ALTER/UPDATE) 语句正在运行的事件,也许只需创建触发器以插入到记录表中就足够了。
关于javascript - 解析 SQLite 更改、创建和更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4801020/