我有一个火鸟表是这样的:如何更改Firebird上的CHECK约束?
CREATE TABLE events (
event VARCHAR(6) NOT NULL
CHECK (event IN ('deploy', 'revert', 'fail')),
change_id CHAR(40) NOT NULL,
change VARCHAR(512) NOT NULL
);
现在我需要另一个值添加到IN()
列表中CHECK约束。我怎么做?
事情我试过到目前为止:
在
RDB$TRIGGERS.RDB$TRIGGER_SOURCE
更新值:UPDATE RDB$TRIGGERS SET RDB$TRIGGER_SOURCE = 'CHECK (event IN (''deploy'', ''revert'', ''fail'', ''merge''))' WHERE RDB$TRIGGER_SOURCE = 'CHECK (event IN (''deploy'', ''revert'', ''fail''))';
似乎不起作用,因为触发器在
RDB$TRIGGERS.RDB$TRIGGER_BLR
编译。创建一个新的检查一个新的表,在复制数据,删除旧表,并重新命名新表。但是,它似乎是一个cannot rename a Firebird table,所以我不能让新表具有与旧的名称相同的名称。
我怀疑更新RDB$TRIGGERS
是去(IDK!),如果我能得到火鸟重新编译代码的方式。但也许有更好的方法?
有没有一种方法以编程方式得到约束名,做好传入到一个文件这项工作'isql'? – theory
我想通过编程方式做到这一点,并将其发布在单独的答案中。 – theory