- 1、本文档共56页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
插入元组或修改属性的值时,RDBMS检查元组上的约束条件是否被满足 如果不满足则操作被拒绝执行 元组上的约束条件检查和违约处理 * */56 5.1 实体完整性 5.2 参照完整性 5.3 用户定义的完整性 5.4 完整性约束命名字句 5.5 触发器 * */56 1. CONSTRAINT 约束 语法: CONSTRAINT 完整性约束条件名 [PRIMARY KEY短语 |FOREIGN KEY短语|CHECK短语] 完整性约束命名子句 * */56 例10: 建立学生登记表Student,要求学号在90000~99999之间,姓名不能取空值,年龄小于30,性别只能是“男”或“女” CREATE TABLE Student ( Sno NUMERIC(6) CONSTRAINT C1 CHECK (Sno BETWEEN 90000 AND 99999), Sname CHAR(20) CONSTRAINT C2 NOT NULL, Sage NUMERIC(3) CONSTRAINT C3 CHECK (Sage 30), Ssex CHAR(2) CONSTRAINT C4 CHECK (Ssex IN ( 男,女)), CONSTRAINT StudentKey PRIMARY KEY(Sno) ); * */56 2. 修改表中的完整性限制 使用ALTER TABLE语句修改表中的完整性限制 * */56 例13:修改表Student中的约束条件,要求学号改为在900000~999999之间,年龄由小于30改为小于40 可以先删除原来的约束条件,再增加新的约束条件 ALTER TABLE Student DROP CONSTRAINT C1; ALTER TABLE Student ADD CONSTRAINT C1 CHECK (Sno BETWEEN 900000 AND 999999); ALTER TABLE Student DROP CONSTRAINT C3; ALTER TABLE Student ADD CONSTRAINT C3 CHECK (Sage 40); * */56 5.1 实体完整性 5.2 参照完整性 5.3 用户定义的完整性 5.4 完整性约束命名字句 5.5 触发器 * */56 典型的应用:银行的取款机系统 为什么需要触发器 * */56 演示: 为什么需要触发器.sql 帐户信息表bank 交易信息表transInfo 张三取钱200 问题: 没有自动修改张三的余额 张三开户1000元,李四开户1元 什么是触发器 * */56 张三 李四 王五 赵二 王三 宋二 刘五 插入 删除 触发器触发 赵二退休 赵二 员工表 退休员工表 触发器是在对表进行插入、更新或删除操作时自动执行的存储过程 触发器通常用于强制业务规则 触发器是一种高级约束,可以定义比用CHECK 约束更为复杂的约束 可执行复杂的SQL语句(if/while/case) 可引用其它表中的列 特点: 触发器定义在特定的表上,与表相关 自动触发执行 不能直接调用 是一个事务(可回滚) * */56 触发器触发时: 系统自动在内存中创建deleted表或inserted表 只读,不允许修改;触发器执行完成后,自动删除 inserted 表 临时保存了插入或更新后的记录行 可以从inserted表中检查插入的数据是否满足业务需求 如果不满足,则向用户报告错误消息,并回滚插入操作 deleted 表 临时保存了删除或更新前的记录行 可以从deleted表中检查被删除的数据是否满足业务需求 如果不满足,则向用户报告错误消息,并回滚插入操作 inserted 和deleted 表 * */56 * */56 修改操作 inserted表 deleted表 增加(INSERT)记录 存放新增的记录 删除(DELETE)记录 存放被删除的记录 修改(UPDATE)记录 存放更新后的记录 存放更新前的记录 inserted表和deleted表存放的信息 DELETE 触发器 INSERT 触发器 UPDATE 触发器 触发器的类型 * */56 创建触发器的语法: WITH ENCRYPTION表示加密触发器定义的SQL文本(syscomments中) DELETE, INSERT, UPDATE指定触发器的类型 如何创建触发器 * */56 CREATE TRIGGER trigger_name ON table_name [WITH ENCRYPTION] FOR [DELETE, INSER
文档评论(0)