create table test (id numeric, t date not null);
create trigger test_in
before insert on test
for each row
when New.t is null
begin
-- set New.t = now();
end;
集New.t没有工作,where can be only select/insert/update/delete stmt. 我不能更改数据库结构(可以设置默认值)。 由于“非空”限制,插入触发器也不适合。 我发现的唯一的解决办法:用于说明目的
insert into test values (New.id, now());
select raise(ignore);
测试数据库而已,在实践中也有更复杂的情况下计算得到的数据。有可能是这样的“更新新集New.t =现在()”,或不?
你可以创建一个视图与INSTEAD OF触发器,并插入到视图? – 2012-02-20 06:42:02
这也是一个决定的变体,但不能解决问题。在我的情况下,表是在同步过程中创建的。之后我可以运行任何ddl。 – lunicon 2012-02-20 07:08:34
在主数据库模型中也使用set stmt触发器。我可以创建视图,但必须更改和编程(如果我可以...) – lunicon 2012-02-20 07:16:51