某表,多字段关联,多种约束,如何做(触发器实现代码)?

来源:互联网 发布:斗鱼威海大叔淘宝店 编辑:程序博客网 时间:2024/05/19 11:47

表AAA存在字段 ID(主键)、No( int 序号)、Name( varchar名字),如何保证同一个Name下No<64且不重复?
为什么触发器在空表时也会有一条记录存在?

--本想用CHECK来做,在网上问了好久也没有问出来,只能写触发器了。ALTER TRIGGER [Trigger_IM_Ammeter]on [dbo].[IM_Ammeter]for INSERTasBEGINdeclare@Ammeter_Number_i intdeclare@Terminal_Id_i intdeclare@QueryCount intSELECT @Ammeter_Number_i=inserted.Ammeter_Number_i,               @Terminal_Id_i=inserted.Terminal_Id_i From insertedIf (@Ammeter_Number_i>64)Beginraiserror('序号只能<=64',16,1)        rollback transaction        returnEnd --print('@Ammeter_Number_i='+convert( varchar(50),@Ammeter_Number_i))--print('@Terminal_Id_i='+convert( varchar(50),@Terminal_Id_i))SELECT @QueryCount=Count(*) From IM_Ammeter Where Terminal_Id_i = @Terminal_Id_i And Ammeter_Number_i = @Ammeter_Number_iprint('@QueryCount='+convert( varchar(50),@QueryCount))if(@QueryCount>1)--空值也等于1,不知道为什么Begin--raiserror('同一个终端下的电表序号不能重复',16,1)        rollback transaction        returnEnd--以下没有找到代码的问题?在触发器中,准备插入的记录放入缓存中,也当一条记录在用,如果是存储过程中以下代码就没有问题了。 --If Exists(Select Ammeter_Number_i From IM_Ammeter --Where Terminal_Id_i = @Terminal_Id_i --And Ammeter_Number_i = @Ammeter_Number_i)--Begin--raiserror('同一个终端下的电表序号不能重复',16,1)--        rollback transaction--        return--EndENDGO

原创粉丝点击