有没有办法让一个字段只能通过触发器编辑?

时间:2013-02-18 11:06:06

标签: sql sql-server database

在Sql Server 2008中有没有办法设置一个只能使用Trigger更改的字段?

示例:

创建记录时,它设置为NULL,然后通过触发器更新为例如1。 用户不应该将其设置为NULL以外的任何值。 然后在更新时,触发器会将值设置为2。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

您是否考虑过使用计算列。如果您希望此列中的数据仅受数据库逻辑控制,则计算列可能是可行的。