2017-05-09 7 views
0

私は、列Aに文字列を挿入すると、同じテーブルの両方の列Bに短いバージョン(最大117文字)が挿入されます。SQL Serverトリガ、短縮されたバージョンの文字列を挿入します。

SQL Server 2014を使用してこれを行うにはどうすればよいですか?

+2

を使用することができます! – jarlh

+0

oracleには、substring関数のようなものがあります.SQLサーバーに対応するものがあるかどうかを確認してください。 –

+1

これはデータの複製であるため、これは推奨されません。短いバージョンは、必要に応じてビューまたはストアドプロシージャで計算する必要があります。 – cloudsafe

答えて

5

SQL Server 2014では、トリガーまたはデータを格納する2番目の列は必要ありません。ただ、計算列を使用します。

alter table t add b as (left(a, 117)) 
+0

しかし、これは私が尋ねたものではありません – FastCow

+1

@FastCowしかし、あなたが尋ねたことはこれを行う良い方法ではありません。トリガーは本当に恐ろしい獣で、実際にはほとんど使用されません。 –

+1

あなたに同意しないと申し訳ありませんが、財界の世界では、トリガーは変更を管理し監査するために非常に幅広く使用されています。それらは、はるかに遅く、計算された列です。 –

0

トリガは賢明ではありませんが、あなたの代わりに計算列を使用して、トリガーをスキップこの

CREATE TRIGGER tx_Shorten 
ON [YourTable] 
AFTER Update, Insert 
AS 
BEGIN 
IF (SELECT [YourColumn2] FROM inserted) <> (SELECT [YourColumn2] FROM 
deleted) 
BEGIN 
UPDATE [YourTable] 
SET [YourColumn2] = (SELECT LEFT([YourColumn], 117)) 
FROM [YourTable] 
END 
END 
関連する問題