【问题标题】:Informix SQL - What is wrong with this simple stored procedure &| trigger syntax?Informix SQL - 这个简单的存储过程有什么问题和|触发语法?
【发布时间】:2011-09-07 03:14:11
【问题描述】:

IBM Informix 动态服务器版本 11.50.FC6

我正在尝试从更新触发器中执行一个简单的存储过程。它们一起用于在更新同一行中的另一个字段时使用当前时间戳更新一个字段。

sp_test:

id          (serial int, unique, not null, primary key)    
stat        (char(1), not null, default="A")
add_date    (date, not null, default today)
upd_date    (date, null)

存储过程代码为:

create procedure upd_row_date_proc (cid int)
update sproc_trig_rec set upd_date = current where id = cid;
end procedure;

这可以正常执行并创建例程,但我尝试在更新时实现的触发器不起作用。

触发代码为:

create trigger upd_row_date_trig
update of stat on sproc_trig_rec
after (execute procedure upd_row_date_proc(id));

我尝试了很多语法变体,但都无法正常工作。

我通常在第 3 行的 ( 字符上得到我的错误。这是错误代码:

  201: A syntax error has occurred.
Error in line 3
Near character position 0

有谁知道我在触发器的语法中做错了什么?是否可以在创建表时定义这种类型的更新,还是我需要通过上述方式来完成它?

感谢您的帮助

【问题讨论】:

  • 不是 9.53 - 请尝试:SELECT DBINFO('version','full') FROM "informix".systables WHERE tabid = 1
  • IBM Informix 动态服务器版本 11.50.FC6

标签: sql stored-procedures triggers syntax-error informix


【解决方案1】:

这终于对我有用了

create trigger ken_trig
update of stat on sproc_trig_rec
referencing old as ken_pre_upd
for each row (execute procedure ken_proc(ken_pre_upd.id));

【讨论】:

  • 是的 - 这是一种可以解决问题的语法。这可能是你所追求的。请参阅CREATE TRIGGER 和后续页面。
猜你喜欢
  • 2011-12-06
  • 2017-12-24
  • 2011-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-07
相关资源
最近更新 更多