网上有很多触发器的例子,但表之间都是没有主外键约束的,下面做一个例子实现带有主外键约束的触发器。
现有两张表:部门表(department) deNum int primary key --部门编号
deName nvarchar(50) --部门名称
员工表(employee) emNum int primary key --员工编号
deNum int foregin key
references department(deNum)--所属部门
需求:当更新主表的部门编号时(当然实际中,我们通常是不会去更新这个字段的)同时更新从表的所属部门编号。我们用触发器实现:
create trigger tri_updateDeNum
on department
for update
as
begin
declare @oldid int,
@newid int
select @oldid=deNum from deleted--获得更新前的id
select @newid=inserted.deNum from department,inserted where department.deNum=inserted.deNum--获取更新后的id
--if(@oldid is null)--判断oldid是否已经取到
--print('@oldid is null')
--if(@newid is null) 判断newid是否已经取到
--print('@newid is null')
if(@oldid is null) or (@newid is null) or(@oldid=@newdi)
--print('failture')
return
--更新从表
update employee set deNum=@newID where deNum=@oldID
end
分享到:
相关推荐
- 条件连接:带有特定连接条件的连接。 - 等连接:条件为等式的连接,是条件连接的特例。 - 自然连接:等连接的特例,连接条件是列名相同。 - 外连接:允许有空值的连接,包括左外连接、右外连接和全外连接。 ...
- **InnoDB**:这是MySQL的默认存储引擎,它支持事务处理、外键约束以及行级锁定。尽管批量插入速度较慢,但对于需要高度一致性的应用来说,InnoDB通常是更好的选择。 #### 事务 事务是指一系列的操作被视为一个...
5. 在有主外键约束的环境中,只能使用Delete,因为Truncate不记录在日志中,不能激活触发器以维护约束。 使用场合: - 如果需要完全删除表,包括其依赖,选择Drop。 - 如果只想清空表,但保留表结构,使用Truncate...
7. **过程调用**:过程是可重复使用的SQL代码块,可以带有参数。问题8展示了如何使用参数调用过程。 8. **LIKE运算符**:在查询中,`LIKE`运算符用于模糊匹配,例如在问题9中查找与"清华"相关的毕业学校。 9. **...
`FOREIGN KEY`用于创建外键约束,实现表间关系;`UNIQUE`约束确保字段值唯一。 4. **主索引**:主索引是表中的一个特殊索引,确保字段值的唯一性,不允许有重复值。 5. **视图**:视图是虚拟表,基于一个或多个表...
2. **存储引擎优化**:InnoDB存储引擎得到了显著加强,支持外键约束、事务处理和行级锁定,提高了并发性能。MyISAM引擎虽然不支持事务,但在读取速度上有优势,适用于读密集型应用。 3. **触发器和存储过程**:...
- 主外键设计时,创建外键约束,确保键的唯一性,避免复合键,外键应关联唯一键。 **第3章 使用规范** 3.1 **综合** - 只有数据库管理员能修改数据库结构,其他人需提交修改申请。 - 数据访问层推荐使用存储过程,...
主外键关系的概念以及使用 数据库的主要类型 数据库的主要数据类型 使用SQL语句来创建数据库和表 约束分类 top的使用 Distinct的使用(去除重复数) 聚合函数 聚合函数注意事项 between and 和 in 的使用 like, not ...
- **引用完整性**:通过外键约束来实现。 - **自定义完整性**:通过规则、存储过程和触发器等来实现。 #### 十、其他注意事项 - SQL Server 使用 Unicode 字符集,这意味着每个字符(包括汉字)占用一个字节。 - ...
为了确保数据的一致性和完整性,还可以在CREATE TABLE语句中定义各种约束,如非空约束(NOT NULL)、唯一约束(UNIQUE)、外键约束(FOREIGN KEY)等。此外,可以使用触发器(TRIGGER)、存储过程(STORED PROCEDURE...
2. `time`:表示一天中的时间,包含小时、分钟和秒,如`time '09:00:30'`或带有毫秒的`time '09:00:30.75'`。 3. `timestamp`:结合日期和时间,如`timestamp '2005-7-27 09:00:30.75'`。 4. `interval`:表示时间...
1.3 数据模型 1.3.1 关系数据库模型 1.3.2 数据模型的构成 1.3.3 常见的数据模型 1.4 关系型数据库 1.4.1 关系型数据库的定义 1.4.2 关系型数据库与表 1.4.3 主键与外键 1.4.4 字段约束 1.4.5 数据的完整性 1.4.6 ...
5. **主索引**:主索引确保字段中输入值的唯一性,不允许有重复值,从而保证数据的完整性。 6. **视图**:视图是一种虚拟表,不实际存储数据,而是基于查询结果。视图可以由其他视图派生,并且可以用于提供数据的...
- 外键约束用于维护参照完整性,而非实体完整性。 - 检查约束和默认约束可以用来确保数据的正确性,但它们服务于不同目的。 8. **存储过程和触发器**: - 存储过程可以带参数,增强其灵活性,可以是系统定义或...
- **外键约束:**外键约束可以为空值,但必须引用另一个表中的主键值。 - **默认键约束:**默认键约束可以为空值,用于指定默认值。 - **UNIQUE约束:**UNIQUE约束不允许有重复值,但可以为空值。 #### 21. 其他...
数据完整性包括实体完整性、参照完整性和用户定义的完整性,外键约束确保参照完整性。存储过程是预编译的SQL代码集合,可以带参数,增强灵活性。触发器在满足特定条件时自动执行,如数据更改。数据库的平安管理涉及...
- **物理模型图**:画出数据库的物理模型图,展示实际存储的表结构,包括主码、外码、索引和约束等细节。 - **数据库部署**:将逻辑模型在选定的DBMS(如SQL Server 2008/2012)中实现,创建查询视图、存储过程和...
关系模型提供了三种完整性规则:实体完整性(确保每个实体的主键都是唯一的),参照完整性(确保引用完整性,即外键关联到存在的主键),以及用户自定义完整性(允许用户定义特定的约束)。此外,还有四种完整性类型...