第5行的错误,我知道这是一个语法错误,但我不明白如何修复它
CREATE OR ALTER trigger ustroystva row position bi for ustroystva
active before insert position 0
as
if(exists (select * from ustroystva where table_name="ustroystva" and column_name="rowposition")) then
alter table ustrovstva drop rowposition;
end
else then
alter table dbo.ustroystva add rowposition int null
end
您显示的语法在 Firebird 中甚至无效,它似乎是 Firebird 和 Microsoft SQL Server 的某种混合体。如果在 Firebird 上执行,则会导致与您在问题中提到的错误不同的错误。错误将是:
Statement failed, SQLSTATE = 42000
Dynamic SQL Error
-SQL error code = -104
-Token unknown - line 1, column 36
-row
CREATE OR ALTER TRIGGER
语法。
但是,看看您的意图,问题是您正在尝试执行 DDL (
ALTER TABLE
),并且您无法在触发器(或任何其他 PSQL 代码)中执行 DDL。有解决方法,使用 EXECUTE STATEMENT
,但不建议这样做。
此外,您尝试执行的 DDL 对我来说根本没有意义。对于
ustroystva
中的每次插入,您可以删除列 rowposition
或添加它。你为什么要这么做?