某表,多字段关联,多种约束,如何做(触发器实现代码)?
2011-07-17 16:36
323 查看
表AAA存在字段 ID(主键)、No( int 序号)、Name( varchar名字),如何保证同一个Name下No<64且不重复?
为什么触发器在空表时也会有一条记录存在?
为什么触发器在空表时也会有一条记录存在?
--本想用CHECK来做,在网上问了好久也没有问出来,只能写触发器了。 ALTER TRIGGER [Trigger_IM_Ammeter] on [dbo].[IM_Ammeter] for INSERT as BEGIN declare @Ammeter_Number_i int declare @Terminal_Id_i int declare @QueryCount int SELECT @Ammeter_Number_i=inserted.Ammeter_Number_i, @Terminal_Id_i=inserted.Terminal_Id_i From inserted If (@Ammeter_Number_i>64) Begin raiserror('序号只能<=64',16,1) rollback transaction return End -- 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_i print('@QueryCount='+convert( varchar(50),@QueryCount)) if(@QueryCount>1)--空值也等于1,不知道为什么 Begin -- raiserror('同一个终端下的电表序号不能重复',16,1) rollback transaction return End --以下没有找到代码的问题?在触发器中,准备插入的记录放入缓存中,也当一条记录在用,如果是存储过程中以下代码就没有问题了。 -- 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 -- End END GO
相关文章推荐
- 开发记录——触发器实现 数据库关联字段
- 更新操作如何防止带外键的字段出现重复,代码实现方法
- 牛腩购物9 用户表设计/动软生成器/金钱字段decimal(18, 2)/ 注册的时候的前台js判断/后台代码判断/正则表达式软件/RegexBuddy/设置数据库字段的唯一性约束/如何获取控件在前台html的id值/如何将C#的后台正则换成js的正则
- Hibernate多对多的关联映射(如何配置,代码实现)
- 如何用多种代码实现51单片机流水灯
- 代码添加约束如何实现
- MSSQL 如何删除字段的所有约束和索引
- [置顶] 如何在浏览器中打开PDF文件并实现预览的思路与代码
- B\S架构快速开发平台如何用代码实现登陆
- 《Asp.Net Forums2.0深入分析》之 Asp.Net Forums是如何实现代码分离和换
- 初识:如何实现利用C语言代码封装成可以安装的windows软件?
- 如何实现合计字段分单位合计 (alv)
- asp.net C#如何实现当地时区转换的代码实例
- [置顶] Android 如何实现代码混淆
- 理解“UML类间的五种关系,也是对代码实现形式的一种约束”
- 安卓开发中,如何在代码中实现第三方推送更新,下载好更新后,自动卸载旧版本再安装,而不是直接覆盖安装
- 以PetShop为样本代码,阐述如何通过改造它实现一个更合理实用的三层架构。
- 【转】物联网跟我动手做系列教程—第三篇 实验三如何用arduino+ethernet shield与yeelink结合5分钟实现web远程家电控制(代码已更新)
- Spring中AOP的理解以及如何用代码实现
- android 如何使用代码实现嵌套布局