8

SQL Advantage を使用しており、テーブルに関連付けられたトリガーを識別するために SQL が何であるかを知る必要があります。別のツールを使用するオプションがないため、古き良き SQL ソリューションが理想的な答えです。

4

8 に答える 8

11
選択する *
システムオブジェクトから
ここで、タイプ = 'TR'

ここから撮影。

于 2008-11-26T06:40:15.767 に答える
11

ということもわかりました

sp_depends <object_name> 

テーブルに関連付けられたすべてのトリガーを含む、テーブルに関する多くの情報が表示されます。これを Ray のクエリと共に使用すると、トリガーを見つけるのがはるかに簡単になります。Ray のリンクされた記事からのこのクエリと組み合わせると、次のようになります。

sp_helptext <trigger_name>

トリガーの定義を確認できます。

sp_depends <trigger_name>

トリガーに関連するすべてのテーブルも表示されます

于 2008-11-26T18:10:55.047 に答える
5

トリガーを表示し、テーブルの sql を作成するには:

select so.name, text
from sysobjects so, syscomments sc
where type = 'TR'
and so.id = sc.id
and text like '%TABLENAME%'
于 2011-01-11T13:28:25.473 に答える
3
SELECT 
    T.name AS TableName
    ,O.name  TriggerName  
    FROM sysobjects O 
    INNER JOIN sys.tables T ON T.object_id = O.parent_obj
    WHERE O.type = 'TR' AND T.name IN ('tableNames')
ORDER BY TableName
于 2011-12-30T12:13:41.847 に答える
1

依存関係情報が常に正確ではないという問題がある (または少なくとも「あった」) と思います。したがって、私は次のようにアプローチしようとします:

select name
from sysobjects
where xtype='TR'
and id in (select id from syscomments where text like '%MY-TABLE-NAME%')

幸運を。

PS-これはテストされていないコードです。動作しない場合はコメントを残してください。修正します。

于 2008-11-29T07:14:26.887 に答える
0

正しいオブジェクトを取得していることを確認するために、次のコードを使用します。Sybase 16 以降、1 つのテーブルに同じタイプのトリガーがさらに存在する可能性があるため、これは完全ではなくなります。

    select tr.id, tr.name, tr.type, tr.crdate, tr.loginame
from sysobjects u
  join sysobjects tr on tr.id in (u.instrig, u.deltrig, u.updtrig, u.seltrig)
where u.name = 'TABLENAME'
于 2016-09-30T12:15:30.833 に答える
0
  1. Sybase Central を開き、トリガー ビューに移動します。
  2. 「オブジェクト名」列をクリックしてソートします。

「オブジェクト名」列には、トリガーに関連付けられたテーブルが表示されます。興味のあるテーブルまでスクロールします。

于 2015-06-19T18:06:43.103 に答える