【问题标题】:Check if only single record exists检查是否只存在一条记录
【发布时间】:2010-02-24 23:29:57
【问题描述】:

我有一张桌子和

GID
ID
DefaultA
DefaultB
DefaultC
DefaultD
DefaultE
DefaultF

我的要求是数据库中应该始终有一条记录。

在前端,如果最终用户尝试更新它可以,因为他将更新现有记录。但如果他尝试输入新记录,我必须阻止他。

【问题讨论】:

    标签: tsql validation concept


    【解决方案1】:

    创建一个主键字段,键入 tinyint,然后设置约束,使值只能为“1”(或者您可以在该字段上使用唯一索引)。将单个记录的字段值设置为“1”。则无法输入其他记录。

    假设 GID 是主键,这里是添加约束到现有表的 sql 代码:

    ALTER TABLE dbo.address ADD CONSTRAINT
      single_record CHECK (GID = 1)
    

    【讨论】:

      【解决方案2】:

      消除所有用户的所有插入、删除权限...

      或者,

      添加一个触发器,以回滚任何尝试删除或插入记录的事务。

      Create Trigger MyTableEnsureSingleRowTrigger 
      On MyTable for Insert, Delete 
      As Rollback Transaction
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-02-20
        • 2012-07-08
        • 1970-01-01
        • 2015-01-21
        • 2012-08-13
        相关资源
        最近更新 更多