4

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

4

4 回答 4

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

或者

dbschema -d db -t tablename 
于 2012-09-25T08:23:51.697 回答
2

信息位于SysTriggersSysTrigBody系统目录表中 — 主要是SysTriggers. 您可以在 Informix Guide to SQL: Reference 手册中找到这些(以及所有其他系统目录表)的描述。您可以在Informix 11.70 信息中心找到它。特别是,tabid(来自 SysTables)标识SysTriggers.

于 2012-09-18T14:47:50.657 回答
1

正如乔纳森回答的那样,您可以使用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

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

于 2012-09-19T06:18:03.930 回答
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;

--Event:触发事件的类型:D = 删除触发器,I = 插入触发器,U = 更新触发器,S = 选择触发器,d = INSTEAD OF 删除触发器,i = INSTEAD OF 插入触发器,u = INSTEAD OF 更新触发器(身份识别系统)

--Old:更新前的值的名称。

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

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

于 2013-01-22T14:28:44.607 回答