是否可以在Firebird 2.5中创建(DDL)触发器,该触发器将拒绝创建没有主键的表?
我在互联网上阅读了这篇文章https://firebirdsql.org/file/documentation/release_notes/html/en/3_0/rnfb30-psql-ddltriggers.html和google,但是没有找到任何解决方案。
我的代码如下:
create trigger trg_no_pk_table
before CREATE TABLE
as
begin
if (rdb$get_context('DDL_TRIGGER', '??????') ???????) then
exception e_table_without_pk;
end
我需要怎么写'????'?
答案 0 :(得分:1)
来自Arioch的评论:
我相信基本上这是一个复杂的操作,包括 几个较小的:其中一个是创建一个裸表,还有一些 后面的步骤是“添加主键类型的约束”,因此表 触发器可能触发得太早。
但是,如果您仍然想这样做,可以使用:
if (rdb$get_context('DDL_TRIGGER', 'SQL_TEXT') not containing 'PRIMARY KEY') then
exception e_table_without_pk;
注意:这仅在Firebird 3中有效