23 lines
1.1 KiB
MySQL
23 lines
1.1 KiB
MySQL
|
|
-- 创建触发器与变量关联表
|
|||
|
|
CREATE TABLE TriggerVariables (
|
|||
|
|
Id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|||
|
|
TriggerDefinitionId INTEGER NOT NULL,
|
|||
|
|
VariableId INTEGER NOT NULL,
|
|||
|
|
FOREIGN KEY (TriggerDefinitionId) REFERENCES TriggerDefinitions(Id) ON DELETE CASCADE,
|
|||
|
|
FOREIGN KEY (VariableId) REFERENCES Variables(Id) ON DELETE CASCADE
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
-- 创建索引以提高查询性能
|
|||
|
|
CREATE INDEX IX_TriggerVariables_TriggerDefinitionId ON TriggerVariables (TriggerDefinitionId);
|
|||
|
|
CREATE INDEX IX_TriggerVariables_VariableId ON TriggerVariables (VariableId);
|
|||
|
|
|
|||
|
|
-- 迁移现有数据:将TriggerDefinitions表中的VariableId迁移到新的关联表中
|
|||
|
|
INSERT INTO TriggerVariables (TriggerDefinitionId, VariableId)
|
|||
|
|
SELECT Id, VariableId
|
|||
|
|
FROM TriggerDefinitions
|
|||
|
|
WHERE VariableId IS NOT NULL AND VariableId > 0;
|
|||
|
|
|
|||
|
|
-- 删除TriggerDefinitions表中的VariableId列(如果数据库支持)
|
|||
|
|
-- 注意:SQLite不支持直接删除列,所以这里只是注释说明
|
|||
|
|
-- 在支持的数据库中,可以使用以下语句:
|
|||
|
|
-- ALTER TABLE TriggerDefinitions DROP COLUMN VariableId;
|