データベースのテーブルのトリガーを自動的にスクリプト化する必要があります。ストアドプロシージャテキストを作成するときに、トリガスクリプトの構文エラーが発生します。トリガ定義テキストを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 + '--')
だから、すべてのコメントの前に、私は改行文字を追加しますが、それは動作しません。
このリンクを参照してください。http://stackoverflow.com/questions/31057/how-to-insert-a-line-break-in-a-sql-server-varchar-nvarchar-string –
テキスト文字列のすべてのスペースに改行文字が追加されました。私はこれをやってみました: 'REPLACE(TrigDefintion、 ' - '、@NewLine + ' - ')'しかし、うまくいきませんでした。 –
生成されたトリガー定義スクリプトをファイルにコピーする方法は、手動でコピーするかどうかです。コピー/ペースト?その場合は、SQL Server Management Studioで元のクエリを実行する前に** CTRL + T **を実行してください。 –