当前位置:首页 » 数据仓库 » 触发器数据库习题
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

触发器数据库习题

发布时间: 2022-05-12 23:09:23

Ⅰ 求做数据库触发器设计题

createorreplacetriggertri_cj

afterinsertonXSCJ

foreachrow

begin

if:new.cj>=60then

Dbms_output.put_line('成绩合格,已完成插入操作');

else

Dbms_output.put_line('成绩不合格,不能计入成绩');

endif;

end;


编译完成后,执行下图的插入语句:

注:把代码中的cj换成XSCJ表中对应的成绩字段。

sql 触发器的题目

什么数据库的触发器啊?

--补充
create table users(
id int,
status char(1)
)

触发器
create or replace trigger trig_users
before insert on users
for each row
begin
if :new.status = '1' then
:new.status := 'a';

elsif :new.status = '2' then
:new.status := 'b';
end if;
end;

测试
SQL> insert into users
2 select 1,'1' from al union
3 select 2,'2' from al union
4 select 3,'1' from al union
5 select 4,'2' from al
6 ;

4 rows inserted

SQL> select * from users
2 ;

ID STATUS
--------------------------------------- ------
1 a
2 b
3 a
4 b

SQL>

Ⅲ 数据库触发器问题

---------------------创建数据库表-------------------------
if exists(select * from sysobjects where name='P')
drop table P
go
use Test
go
create table P
(
PNo char(2), --零件编号
PName varchar(15), --零件名称
Color char(2), --零件颜色
Weight int --零件重量
)
---------------------创建触发器-----------------------
if exists(select * from sys.triggers where name ='test_trigger')
drop trigger test_trigger
go
create trigger test_trigger
on P
for insert
as
begin tran
declare @pno char(2)
declare @pname varchar(15)
declare @color char(2)
declare @weight int
declare @errorsum int = 0
select @pno=PNo,@pname=PName,@color=Color,@weight=Weight from inserted
if exists(select * from sysobjects where name='Test_Table')
begin
insert into Test_Table values(@pno,@pname,@color,@weight)
set @errorsum+=@@error
end
else
begin
select * into Test_Table from inserted
set @errorsum+=@@error
end
if(@errorsum<>0)
begin
rollback tran
end
else
commit tran
go

--看看这个能不能解决问题,我自己写的

Ⅳ 数据库的一道触发器题目,想请大佬帮看下有没有错的地方。

试卷寄到学校,会由一些不想关的人把答题纸拿出来,然后封上名字变成一本一本的答题纸。然后几个老师判答题纸,她们看不到卷子,看到你试卷的人是无关的人

Ⅳ 数据库问题之触发器

instead of 执行前触发器,一般叫替代触发器
在用户执行数据操作数据之前,触发器触发,执行触发器代码,不执行用户的操作
根据这个特性,
1>instead of 触发器可以为视图添加数据操作的功能
如:
表:
表1(ID,NAME) 表2(ID,DATE)
视图 :
DATA(表1.ID,表1.NAME,表2.DATE)

为DATA视图添加insert操作:代码如下
create triger trgName
on DATA
instead of insert
as
begin
insert into 表1 select ID,NAME from inserted
insert into 表2 select ID,DATE from inserted
end
2>可以根据情况进行数据操纵(insert的作用)
如:我们需要只有5月份才可以操纵数据,其他月份都禁止操纵
使用instead of触发器可以避免,插入了数据又删除的,无效劳动,浪费不必要的系统资源
3>可以根据条件判断数据的合法性,在执行或否决执行(update的作用),没有必要执行之后再进行回滚
4>可以防止表中数据,或一定条件的数据被删除(delete的作用),没有必要删除了在重新写入表

总的来说,我用一张简单的图来说明下,如:
(A用户的DML操纵,B为实际的DML操纵,C为触发器及其代码)

图1:for after 触发器
A↓
B↓
C↓
结束
图2:instead of触发器
A↓
C↓
结束

所以instead of触发器必须要进行实质的DML操纵

Ⅵ SQL触发器问题(数据库)

create table s(sno number(10,0) primary key,sname varchar2(10),birthday date,age number(3,0),sex varchar2(2));

create table c(cno number(10,0) primary key,cname varhcar2(10),credit number(20,2),teacher varchar2(10));

create table sc(sno number(10,0) references s(sno),cno number(10,0) references c(cno),grade number(5,2),seldate date);

create trigger tri_sc
before insert or update on sc
for each row
declare
exc1,exc2 exception;
temp_count1,temp_count2 number;
begin
select count(*) into temp_count1 from sc where :new.sno=sc.sno group by sno;
select count(*) into temp_count2 from sc where :new.cno=sc.cno group by cno;
if temp_count1 >=5 then
raise exc1;
end if;
if temp_count2 >=3 then
raise exc2;
end if;
exception
when exc1 then
dbms_output.put_line('最多只能选修5门课程'); --异常处理这部分你可以自己决定咯
when exc2 then
dbms.output.put_line('选修本门课程人数已满');
end;

create trigger tri_s
before update on s
for each row
declare
exc exception;
begin
if :new.age < :old.age then
raise exc;
end if;
exception
when exc then
dbms_output.put_line('年龄只能增加');
end;

Ⅶ sql数据库选择题,在应用中使用sql,触发器,存储过程

1)查看表中的触发器类型:
sp_helptrigger:返回对当前数据库的指定表定义的 DML 触发器的类型。sp_helptrigger 不能用于 DDL 触发器。
示例: EXEC sp_helptrigger '表名'

2)查看触发器的有关信息:
sp_help:报告有关数据库对象(sys.sysobjects 兼容视图中列出的所有对象)、用户定义数据类型或某种数据类型的信息。
示例: EXEC sp_help '触发器名'

3)显示触发器的定义:
sp_helptext:显示规则、默认值、未加密的存储过程、用户定义函数、触发器或视图的文本。
示例: EXEC sp_helptext '触发器名'

4)查看当前库中所有的触发器:
查询脚本:SELECT * FROM Sysobjects WHERE xtype = 'TR'

5)查看当前库中所有的触发器和与之相对应的表:
查询脚本:SELECT tb2.name AS tableName,tb1.name AS triggerName FROM Sysobjects tb1 JOIN Sysobjects tb2 ON tb1.parent_obj=tb2.id WHERE tb1.type='TR'

Ⅷ 关于数据库触发器的问题

1. 利用课本上介绍的几种方法对数据库的完整性进行定义和检验,掌握Constraint,Check等短句的用法;
2. 在SQL Server或者MySQL中练习触发器的使用;
a) 在northwind数据库中建立2个表,cust和order,表定义如下:
表cust
列名 类型及长度 其它
CustomerID char(5) 主键
Custcity Char(24)
Custname Char(64) 非空
CStatus int 客户状态
Cstorage int 库存量
Cdate Date 日期
表order:
列名 类型及长度 其它
Orderid char(5) 主键
OrderNames Char(24) 非空
OStatus int 状态
Orders int 定购量
Odate Date 日期

b) 要求根据以上表完成以下作业:
① 在cust表中建立删除触发器,实现上述2表的级联删除。
② 在order表建立insert触发器,当向order表插入一行,如果cust表中对应记录status值为1,说明处于准备状态不能写入该数据;
③ 在order表上建立一个插入触发器,在添加一个订单时,减少cust表的相应货物的记录的库存量。
④ 在order表上建立一个插入触发器,规定订单日期(Odate)不能手工修改。
⑤ 要求订购的物品一定要在仓库中有的,并且数量足够。
⑥ 在order表上建立一个插入触发器,同时插入多行数据时,要求订购的物品一定要在仓库中有的。
⑦ 查看触发器情况:
1. sp_helptrigger 触发器名
2. sp_helptext 触发器名
3. 设置某一触发器的无效和重新有效
4. 删除触发器 YES

Ⅸ 计算机组成原理复习题 中断接口中有哪些标志触发器功能是什么

中断接口中有四个标志触发器:
(1) 准备就绪的标志(RD):一旦设备做好一次数据的接受或发送,便发出一个设备动作完毕信号,使RD标志置“1”。在中断方式中,该标志用作为中断源触发器,简称中断触发器。
(2) 允许中断触发器(EI):可以用程序指令来置位。EI为“1”时,某设备可以向CPU发出中断请求;EI为“0”时,不能向CPU发出中断请求,这意味着某中断源的中断请求被禁止。设置EI标志的目的,就是通过软件来控制是否允许某设备发出中断请求。
(3) 中断请求触发器(IR):它暂存中断请求线上由设备发出的中断请求信号。当IR标志为“1”时,表示设备发出了中断请求。
(4) 中断屏蔽触发器(IM):是CPU是否受理中断或批准中断的标志。IM标志为“0”时,CPU可以受理外界的中断请求,反之,IM标志为“1”时,CPU不受理外界的中断。