私は、列Aに文字列を挿入すると、同じテーブルの両方の列Bに短いバージョン(最大117文字)が挿入されます。SQL Serverトリガ、短縮されたバージョンの文字列を挿入します。
SQL Server 2014を使用してこれを行うにはどうすればよいですか?
私は、列Aに文字列を挿入すると、同じテーブルの両方の列Bに短いバージョン(最大117文字)が挿入されます。SQL Serverトリガ、短縮されたバージョンの文字列を挿入します。
SQL Server 2014を使用してこれを行うにはどうすればよいですか?
SQL Server 2014では、トリガーまたはデータを格納する2番目の列は必要ありません。ただ、計算列を使用します。
alter table t add b as (left(a, 117))
しかし、これは私が尋ねたものではありません – FastCow
@FastCowしかし、あなたが尋ねたことはこれを行う良い方法ではありません。トリガーは本当に恐ろしい獣で、実際にはほとんど使用されません。 –
あなたに同意しないと申し訳ありませんが、財界の世界では、トリガーは変更を管理し監査するために非常に幅広く使用されています。それらは、はるかに遅く、計算された列です。 –
トリガは賢明ではありませんが、あなたの代わりに計算列を使用して、トリガーをスキップこの
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
を使用することができます! – jarlh
oracleには、substring関数のようなものがあります.SQLサーバーに対応するものがあるかどうかを確認してください。 –
これはデータの複製であるため、これは推奨されません。短いバージョンは、必要に応じてビューまたはストアドプロシージャで計算する必要があります。 – cloudsafe