2016-09-20 33 views
0

データベースのテーブルのトリガーを自動的にスクリプト化する必要があります。ストアドプロシージャテキストを作成するときに、トリガスクリプトの構文エラーが発生します。トリガ定義テキストをSQL Serverのクエリウィンドウにコピーすると、定義にはスクリプトのCRLF文字が含まれていないことがわかります。ほとんどの定義はコメント行にあります。トリガースクリプトに改行文字を追加する必要があります

トリガー定義テキストに改行文字を追加する方法はありますか。 私はこのクエリを使用して、トリガ定義を取得:

SELECT trig.name AS "@TriggerName", REPLACE(OBJECT_DEFINITION(trig.object_id), '''', '''''') AS "@TrigDefinition" 
FROM sys.triggers trig 
WHERE trig.type = 'TR' 

テキストトリガーのトリガーdefintionのテキストは次のようになります。

-- ============================================= -- Author: <Author,,Name> -- Create date: <Create Date,,> -- Description: <Description,,> -- ============================================= 
    CREATE TRIGGER TestTrigger2  ON BundleProduct  AFTER DELETE,UPDATE AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON;  -- Insert statements for trigger here select * from Edging; END  

どのように私はトリガスクリプトに改行文字を追加することができますクエリから作成されたストアドプロシージャに追加することはできますか?

UPDATE 私はREPLACE文字列関数を使用してトリガの定義に改行文字(CHAR(13)+ CHAR(10)を追加してみました:

DECLARE @NewLine varchar(2) = CHAR(13) + CHAR(10); 
REPLACE(TrigDefinition, '--', @NewLine + '--') 

だから、すべてのコメントの前に、私は改行文字を追加しますが、それは動作しません。

+0

このリンクを参照してください。http://stackoverflow.com/questions/31057/how-to-insert-a-line-break-in-a-sql-server-varchar-nvarchar-string –

+0

テキスト文字列のすべてのスペースに改行文字が追加されました。私はこれをやってみました: 'REPLACE(TrigDefintion、 ' - '、@NewLine + ' - ')'しかし、うまくいきませんでした。 –

+0

生成されたトリガー定義スクリプトをファイルにコピーする方法は、手動でコピーするかどうかです。コピー/ペースト?その場合は、SQL Server Management Studioで元のクエリを実行する前に** CTRL + T **を実行してください。 –

答えて

1

使用CHAR(10)は、SQL文字列に改行文字を挿入する。

必要に応じて

、あなたもを使用することができます3210にキャリッジリターン文字を挿入すると、CHAR(13)+CHAR(10)CRLFとなります。

あなたは現在の文字列を置き換えて修正することはできません。必要な文字列を手作業で作成し、テーブルを更新する必要があります。

+0

コメント行の終わりを識別するにはどうすればよいですか?なぜこれはトリガー定義で問題ですが、ビューやストアード・プロシージャーのような他の定義では問題になりませんか? –

+0

コメント行の終了を識別するためのルールはありません。だからこそ、人間はそれを読んで、コメントとコードが何であるかを判断する必要があります。この問題はトリガーに固有の問題ではないため、最初にトリガーがテーブルに格納されていた方法とは異なるものであったに違いありません。 btw、これはXYの問題かもしれませんし、あなたが実際にしようとしていることは何でも簡単な方法があるかもしれません。 –

0

EXEC([Trigger Definition])が追加されました。これでストアドプロシージャに追加することができます。

関連する問題