当一个表同时具有触发器和约束时,如何执行?
A 先约束后触发器 B先触发器后约束 C同时执行 D 冲突
A 先约束后触发器 B先触发器后约束 C同时执行 D 冲突
根据实验要求和实验内容,完成下列语句 1) 将数据库stu的表course的cno字段定义为主键,约束名称为cno_pk; 2) 为表course中的字段cname添加唯一值约束; 3) 对于数据表sc的sno、cno字段定义为外码,使之与表student的主码sno及表course的主码cno对应,实现如下参照完整性: l 删除student表中记录的同时删除sc表中与该记录sno字段值相同的记录; l 修改student表某记录的sno时,若sc表中与该字段值对应的有若干条记录,则拒绝修改; l 修改course表cno字段值时,该字段在sc表中的对应值也应修改; l 删除course表一条记录时,若该字段在在sc表中存在,则删除该字段对应的记录; l 向sc表添加记录时,如果该记录的sno字段的值在student中不存在,则拒绝插入; 4)定义check约束,要求学生学号sno必须为9位数字字符,且不能以0开头,第二三位皆为0; 5)定义stu数据库中student表中学生年龄值在16~25范围内; 6)删除表course中字段cname的唯一值约束; 7) 为表course建立一个 INSERT触发器,当插入的新行中课程学分(ccredit)的值不是1~6时,就激活该出发器,撤销该插入操作,并使用PRINT语句返回一个错误信息。 8)为course表再创建一个UPDATE触发器,当更新了某门课程的课程号信息时,就激活该触发器级联更新sc表中相关的课程号信息,并使用PRINT语句返回一个提示信息。 9)为student表创建DELETE触发器,在删除中的一条记录的同时将sc表中的相应记录也删除。 10)创建INSTEAD OF触发器,当向sc表中插入记录时,先检查sno列上的值在student中是否存在,如果存在执行插入操作,如果不存在则提示“该学生不存在”。
实验十三:触发器 一、实验目的 理解触发器的概念和作用;了解触发器的分类及触发条件;掌握触发器的定义及应用。 二、实验原理 使用CREATE TRIGGER语句定义触发器,ALTER TRIGGER语句修改触发器,DROP TRIGGER语句删除触发器。触发器分AFTER/FOR和INSTEAD OF两种类型:AFTER/FOR类型的触发器是在相应的触发语句(insert、delete、update)执行完后被触发的。如果触发语句对应的表上有完整性约束,这些完整性约束必须不违背时,相应的触发语句才能执行,然后才能触发对应的AFTER/FOR类型的触发器。INSTEAD OF类型的触发器会在触发语句(insert、delete、update)执行之前被触发,并取代相应的触发语句。在表或视图上,每个INSERT、UPDATE或DELETE语句只能创建一个INSTEAD OF类型的触发器。SQL SERVER为每个触发器都创建了两个临时表INSERTED表和DELETED表,这两个表的逻辑结构与被触发器作用的表一样,用户可以读取这两个表的内容,但不能对它们进行修改,触发器执行完后,这两个表也会自动删除。当执行INSERT时,INSERTED表中保存要向表中插入的所有行;当执行DELETE时,DELETED表中保存要从表中删除的所有行;当执行UPDATE时,修改前的行保存在DELETED表中,修改后的行保存在INSERTED行中。 三、实验设备 安装有SQL SERVER 2012的计算机。 四、实验示例 1、写一个允许用户一次只删除一条员工记录的触发器。 create trigger tr_emp on employee for delete as declare @row_cnt int select @row_cnt=count(*) from deleted if @row_cnt>1 begin print '删除操作不允许删除多条人事表数据!!!' rollback transaction end delete from employee where sex='女' --显示'删除操作不允许删除多条人事表数据!!!' 2、创建一个触发器,只能接受女员工 create trigger employee_insert2 on employee after insert as if exists(select * from inserted where sex='男') begin print '本公司不接受男员工!' rollback transaction end else print '欢迎加入本公司!' insert employee values('E0021','林中正','男','管理','总经理','1974-10-01','1953-05-04',100000,'13879765667','上海市') --显示'本公司不接受男员工!' 3、定义一触发器,保证新添加的员工的工资不能超过5000元 create trigger employee_insert on employee after insert as if(select salary from inserted)>5000 begin print '新添加的员工的工资不能超过5000元!' rollback end 五、实验内容 l 针对bookshop数据库,完成以下操作: 1、针对employee表写一个DELETE触发器,显示删除的员工人数。 2、针对employee表写一个UPDATE触发器,限制每次工资额的变动不能超过原工资的20%。 3、定义一个触发器,保证新添加的员工的工资不能超过5000元 4、对sale_item表创建一个触发器,当插入一条销售明细记录时,如果该记录的产品数量超过5,则显示“欢迎成为本公司的VIP会员!” 5、定义一个触发器,当修改sale_item表中的销售数量或者价格时,自动更新sales表中的订单金额。 6、定义一个触发器,实现对sales表的级联删除操作。 7、定义一个触发器,实现对books表的级联删除操作。
A.触发器是在数据修改前被触发,约束是在数据修改后被触发
B.触发器是一个能自动执行的特殊的存储过程
C.触发器作为一个独立的对象存在,与数据库中其他对象无关
D.inserted表和deleted表是数据库中的物理表
触发器是用户定义的SQL事务命令的集合:当对一个表进行插入、更改、删除等操作时,这组命令(60)。
A.会保存该组操作
B.会保存操作结果
C.会自动执行
D.会提示相关信息
A.在某个时间发生时自动激活而执行
B.可以实现比约束更为复杂的完整性要求
C.可根据表数据修改前后的状态
D.可以防止恶意的或错误的INSERT、UPDATE和DELETE操作
A.定义了一个有相关列和行的集合
B.当用户修改数据时,一种特殊形式的存储过程被自动执行
C.SQL语句的预编译集合
D.它根据一或多列的值,提供对数据库表的行的快速访问
A.触发器是一个PL/SQL块、C或Java编写的过程,与表、视图、模式或数据库相关联。
B.当特定的事件发生时,触发器需要被显式地触发
C.当特定的事件发生时,触发器隐式地执行
D.当发生数据操纵事件(如DML事件)或系统事件(如登录数据库、关闭数据库)时,触发器被触发
A.触发器是自动执行的,可以在一定条件下触发
B.触发器不可以同步数据库的相关表进行级联更改
C.触发器操作与约束有冲突时,触发器仍会执行
D.删除触发表时,触发器不会被随之删除
A.用微软分布式事务处理Employee表在分布式处理中如果EmployeeID没有执行则将回滚整个事务。
B.在VacuumSales表的EmployeeID列中添加一个CHECK约束。
C.在VacuumSales表的EmployeeID列中添加一个外键约束参照Employee表中的EmployeeID列。
D.在VacuumSales表中添加一个FORINSERT触发器。在触发器中,在inserted表的基础上连接Employee表和EmployeeID表,测试IsActive列。
为了保护您的账号安全,请在“简答题”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!