Sql Server 2008 では、トリガーを使用してのみ変更できるフィールドを設定する方法はありますか?
例:
レコードを作成すると、レコードは NULL に設定され、トリガーによってたとえば 1 に更新されます。ユーザーが NULL 以外に設定することはできません。そして、更新されると、トリガーは値を 2 に設定します。
Sql Server 2008 では、トリガーを使用してのみ変更できるフィールドを設定する方法はありますか?
例:
レコードを作成すると、レコードは NULL に設定され、トリガーによってたとえば 1 に更新されます。ユーザーが NULL 以外に設定することはできません。そして、更新されると、トリガーは値を 2 に設定します。
create table tmp (a int primary key, b int)
GO
create trigger tr_insupd_tmp on tmp
instead of insert, update
as
if not exists(select * from deleted)
-- Process Insert
insert into tmp
select a, 1
from inserted
else
-- Process Update
update tmp
set b = 2
from tmp t
inner join inserted i on t.a = i.a
GO
計算列の使用を検討しましたか。この列のデータをデータベース ロジックのみで制御する場合は、計算列が最適です。