如何识别与informix数据库中的表关联的触发器?

时间:2012-09-18 13:04:00

标签: triggers informix

我们如何识别与Informix数据库中的表关联的触发器?

4 个答案:

答案 0 :(得分:2)

信息位于SysTriggersSysTrigBody系统目录表中 - 主要是SysTriggers。您可以在“Informix SQL指南:参考手册”中找到这些(以及所有其他系统目录表)的说明。你可以在Informix 11.70 Info Centre找到它。特别是,tabid(来自SysTables)标识SysTriggers中表格的触发器。

答案 1 :(得分:2)

 select tabname,a.* from systriggers a, systables b
where a.tabid=b.tabid and tabname="TableName" 

dbschema -d db -t tablename 

答案 2 :(得分:1)

正如Jonathan所说,您可以使用systriggers和其他系统目录表。我在架构报告实用程序中使用它们:http://code.activestate.com/recipes/576621-dump-informix-schema-to-text/

此实用程序可以与Python和ODBC一起使用,也可以与Jython和JDBC一起使用。它显示了有关每个表的触发器的信息,如:

--- triggers ---
defbookacc  defbookacc_dtrg D
defbookacc  defbookacc_itrg I
defbookacc  defbookacc_utrg U
mc_loadman  loadman_del D

然后显示每个触发器的主体。

答案 3 :(得分:1)

--OBTIENE LOS TRIGGERS DE LA TABLA:
SELECT T.tabid, TRIM(T.owner) owner, T.tabname, TR.trigid, TRIM(TR.owner) tr_owner, TR.trigname, TR.event, TR.old, TR.new, TR.mode, TRIM(TR.collation) collation,
TB.datakey, TB.seqno, TB.data
FROM systables T, systriggers TR, systrigbody TB
WHERE T.tabname = 'table_name' AND TR.tabid = T.tabid AND TB.trigid = TR.trigid AND TB.datakey IN ('D', 'A')
ORDER BY TB.trigid, TB.datakey DESC, TB.seqno ASC;

- 事件:触发事件的类型:D =删除触发,I =插入触发,U =更新触发,S =选择触发,d = INSTEAD OF删除触发,i = INSTEAD OF插入触发,u = INSTEAD OF更新触发器(IDS)

- 旧:更新前的值名称。

- 新增:更新后的值名称。

- DataKey:指定数据类型的代码:A =正文的ASCII文本,触发的动作,B =正文的线性化代码,D =标题的英文文本,触发定义,H =线性化代码header,S =符号表的线性化代码。