0
郵便番号の列も更新されていない限り、顧客のアドレス列を更新することはできません。他のものなしで更新しようとすると、トリガが起動し、ユーザにエラーメッセージが表示されます。他の列の変更なしで列の変更を防止する
Microsoft SQL Server 2012でこれをどのように行うことができるかについてのご支援をいただければ幸いです!
郵便番号の列も更新されていない限り、顧客のアドレス列を更新することはできません。他のものなしで更新しようとすると、トリガが起動し、ユーザにエラーメッセージが表示されます。他の列の変更なしで列の変更を防止する
Microsoft SQL Server 2012でこれをどのように行うことができるかについてのご支援をいただければ幸いです!
あなたが外(この更新がバッチで起こることができれば、あなたは各レコードをループする必要があることを
CREATE TRIGGER [dbo].AU_MyTrigger ON [dbo].MyTable
FOR UPDATE
AS
BEGIN
declare @bu_addr varchar(100)
declare @bu_zip varchar(100)
declare @au_addr varchar(100)
declare @au_zip varchar(100)
select @bu_addr = addr, @bu_zip = zip from DELETED
select @au_addr = addr, @ay_zip = zip from INSERTED
if (@bu_addr <> @au_addr) and (@bu_zip = @au_zip)
BEGIN
-- update table with old values
-- raise error
END
END
ロジック下記の注意を使用して、トリガーの終わりに古いだけリターンエラーにその値を更新することができますofループ)。その場合、更新された行を反復処理するには、CURSORを使用する必要があります。
ケースは説明したほど簡単ではないかもしれませんが、これは機能するアプローチです。
アプリケーションレベルで処理する必要があり、データベースレベルでは処理しないでください。 –