使用T-sql 触发器限制数据库中列中非null行值得唯一性

ContractedBlock.gif ExpandedBlockStart.gif Code
Create TRIGGER [dbo].[nameTrigger]
   
ON  [dbo].[Student]
   
for INSERT,UPDATE
AS 
BEGIN
    
declare @InsertedName varchar(50)
    
declare @Count int
    
declare @StudentId int

    
set @InsertedName=(select [Name] from Inserted)
    
set @StudentId=(select [StudentId] from Inserted)

    
    
set @Count=(select count(*
        
from Student
        
where [Name]= @InsertedName and StudentId <> @StudentId)
    
if @Count > 0
    
begin
    
RaisError('数据库中有同名,插入或更新失败',16,1)
    
rollBack Tran
    
end
END

Student表如下,其中Name列可以为null,但是,不是null列不能有重复!也就是说可以没有名字,但是不能有重名情况!

 

ContractedBlock.gif ExpandedBlockStart.gif Code
CREATE TABLE [dbo].[Student](
    
[StudentId] [int] IDENTITY(1,1NOT NULL,
    
[Name] [varchar](50NULL,
    
[Age] [int] NULL,
    
[ClassId] [int] NULL,
)

转载于:https://www.cnblogs.com/xhan/archive/2008/12/11/1352703.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值