当前位置:首页 » 编程语言 » sql触发器怎么用
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql触发器怎么用

发布时间: 2022-04-01 16:15:45

sql 触发器的使用,

--关于问题1

CREATETRIGGERTRI1
ONUser
FORINSERT
AS
BEGIN
INSERTINTOInformation
SELECTid,
name
FROMINSERTED
END
GO

注意:name后面的列,如果不管的话,给个默认值,否则会出现插入错误。

例如:

INSERTINTOInformation
SELECTid,
name,
NULL,
NULL--等等
FROMINSERTED

关于问题2~

CREATETRIGGERTRI2
ONUser
FORUPDATE
AS
IFUPDATE(name)
BEGIN
UPDATEInformation
SETA.name=B.name
FROMInformationA,INSERTEDB
WHEREA.id=B.id
END
GO

㈡ sql 触发器怎么用

触发器是自动触发的,不需要也不能手动调用

㈢ 如何使用sql触发器

CREATE OR REPLACE TRIGGER INSERT_STU_TRIGGER
BEFORE INSERT ON STUDENT
FOR EACH ROW
DECLARE
v_alone_course number;
v_total_course number;
v_TRUEANSWER varchar2(20);
v_t1 number;
BEGIN
select j.题目编号1 into v_t1 from juanzi j where j.卷号=:new.卷号;
select t.分值,t.TRUEANSWER into v_alone_course,v_TRUEANSWER from timu t where t."题目编号"=v_t1;
if v_trueanswer = :new.答案1 then
select v_alone_course into :new.成绩 from al;
end if;
END;
这个是按照你的需求写的一个ORACLE数据库的SQL语句。
下面这个是测试添加语句:
insert into student(学号,教师工号,卷号,答案1) VALUES(123456,40564,1001,'A');

㈣ sql的触发器是干什么的,怎么用

触发器是用来保证数据一致性用的.他分为两种一种是操作前触发另外一种是操作后触发 ,主要是对数据的插入,删除,修改等动作进行跟踪及作出相应动作

㈤ SQl中触发器怎样执行的

创建触发器 是特殊的存储过程,自动执行,一般不要有返回值。

1、后触发器 (AFTER,FOR)先执行对应语句,后执行触发器中的语句。

2、前触发器 并没有真正的执行触发语句(insert,update,delete),而是执行触发后的语句。

3、行级触发器 (FOR EACH ROW) 在SQL server 中不存在。

(5)sql触发器怎么用扩展阅读:

创建触发的语法

CREATE TRIGGER trigger_name --触发器名称

ON table_name --触发的表

[WITH ENCRYPTION]

FOR [DELETE, INSERT, UPDATE] --选择触发器类型

AS --触发后要做的语句

T-SQL语句

GO --结束标记

㈥ SQL触发器如何使用

在SQL中,触发器是一种特殊类型的存储过程,它不同于SQL的存储过程。触发器主要是通过事件进行触发而被执行的,而存储过程可以通过存储过程名字而被直接调用。当对某一表进行诸如UPDATE、
INSERT、
DELETE
这些操作时,SQL
Server
就会自动执行触发器所定义的SQL
语句,从而确保对数据的处理必须符合由这些SQL
语句所定义的规则。
触发器的主要作用就是其能够实现由主键和外键所不能保证的复杂的参照完整性和数据的一致性。除此之外,触发器还有其它许多不同的功能:
(1)强化约束(Enforce
restriction)
触发器能够实现比CHECK
语句更为复杂的约束。
(2)跟踪变化(Auditing
changes)
触发器可以侦测数据库内的操作,从而不允许数据库中未经许可的指定更新和变化。
(3)级联运行(Cascaded
operation)。
触发器可以侦测数据库内的操作,并自动地级联影响整个数据库的各项内容。例如,某个表上的触发器中包含有对另外一个表的数据操作(如删除,更新,插入)而该操作又导致该表上触发器被触发。
(4)存储过程的调用(Stored
procere
invocation)。
为了响应数据库更新触,发器可以调用一个或多个存储过程,甚至可以通过外部过程的调用而在DBMS(
数据库管理系统)本身之外进行操作。
由此可见,触发器可以解决高级形式的业务规则或复杂行为限制以及实现定制记录等一些方面的问题。例如,触发器能够找出某一表在数据修改前后状态发生的差异,并根据这种差异执行一定的处理。此外一个表的同一类型(INSERT、
UPDATE、
DELETE)的多个触发器能够对同一种数据操作采取多种不同的处理。
总体而言,触发器性能通常比较低。当运行触发器时,系统处理的大部分时间花费在参照其它表的这一处理上,因为这些表既不在内存中也不在数据库设备上,而删除表和插入表总是位于内存中。可见触发器所参照的其它表的位置决定了操作要花费的时间长短。
触发器的种类
SQL
Server
2000
支持两种类型的触发器:AFTER
触发器和INSTEAD
OF
触发器。其中AFTER
触发器即为SQL
Server
2000
版本以前所介绍的触发器。该类型触发器要求只有执行某一操作(INSERT
UPDATE
DELETE)
之后,触发器才被触发,且只能在表上定义。可以为针对表的同一操作定义多个触发器。对于AFTER
触发器,可以定义哪一个触发器被最先触发,哪一个被最后触发,通常使用系统过程sp_settriggerorder
来完成此任务。
INSTEAD
OF
触发器表示并不执行其所定义的操作(INSERT、
UPDATE、
DELETE),而仅是执行触发器本身。既可在表上定义INSTEAD
OF
触发器,也可以在视图上定义INSTEAD
OF
触发器,但对同一操作只能定义一个INSTEAD
OF触发器。

㈦ sql2008触发器怎么用

//from 前面多个逗号
CREATE TRIGGER trg_A
ON A
FOR INSERT
AS
insert into B
select inserted.日期,
inserted.数据A-A.数据A as 数据A,
inserted.数据B-A.数据B as 数据B
from inserted.A
where datediff(day,A.日期,inserted.日期)=1

㈧ 请问sql触发器insert触发器如何使用

DML触发器有三类:
1, insert触发器;
2, update触发器;
3, delete触发器;
触发器的组成部分:
触发器的声明,指定触发器定时,事件,表名以类型
触发器的执行,PL/SQL块或对过程的调用
触发器的限制条件,通过where子句实现
类型:
应用程序触发器,前台开发工具提供的;
数据库触发器,定义在数据库内部由某种条件引发;分为:
DML触发器;
数据库级触发器;
替代触发器;
DML触发器组件:
1,触发器定时
2,触发器事件
3,表名
4, 触发器类型
5, When子句
6, 触发器主体
可创建触发器的对象:数据库表,数据库视图,用户模式,数据库实例
创建DML触发器:
Create [or replace] trigger [模式.]触发器名
Before| after insert|delete|(update of 列名)
On 表名
[for each row]
When 条件
PL/SQL块
For each row的意义是:在一次操作表的语句中,每操作成功一行就会触发一次;不写的话,表示是表级触发器,则无论操作多少行,都只触发一次;
When条件的出现说明了,在DML操作的时候也许一定会触发触发器,但是触发器不一定会做实际的工作,比如when 后的条件不为真的时候,触发器只是简单地跳过了PL/SQL块;
Insert触发器的创建:
create or replace trigger tg_insert
before insert on student
begin
dbms_output.put_line('insert trigger is chufa le .....');
end;
执行的效果:
SQL> insert into student
2 values(202,'dongqian','f');
insert trigger is chufa le .....
update表级触发器的例子:
create or replace trigger tg_updatestudent
after update on student
begin
dbms_output.put_line('update trigger is chufale .....');
end;
运行效果:
SQL> update student set se='f';
update trigger is chufale .....
已更新8行;
可见,表级触发器在更新了多行的情况下,只触发了一次;

㈨ sql如下情况,怎么使用触发器做到

把这个工作分两步做:
1 在a表伤建立触发器,实现a表增加数据,同时插入b表。

2 做一个数据库任务,每天执行,删除b表中,30天之前的数据。

㈩ 怎么用SQL做触发器

我写的,没有经过测试,仅供参考,如果不对的话请原谅

CREATE TRIGGER books_rt_upd
ON books_rt
FOR UPDATE
AS
IF UPDATE (return_date)
BEGIN

-- 定义 借书日期
declare @lend_date date
-- 定义 应还书日期
declare @return_date date
-- 定义 超出天数
declare @exday int
-- 定义 超出价格
declare @exfee decimal
-- 定义 用户id
declare @userid
-- 定义 用户id
declare @usertype

-- 修改用户归还日期,和借书的id号

select @return_date=return_date , @lendid = lendid from INSERTED

select
@lend_date=lend_date,@userid=userid ,@usertype=@usertype
from
books_rt
where lendid in (select lendid from INSERTED)

-- 计算超出多少天并乘以价格
set @exday = @return_date - @lend_date

-- 根据用户级别察看是否超过天数
IF @usertype= '01' begin
if @exday > '10' --01级别可以借书10天
begin
set @exday = @exday - 10
end
end

IF @usertype= '02' begin
if @exday > '20' --02级别可以借书20天
begin
set @exday = @exday - 20
end
end

set @exfee = @exday * 0.3

-- 修改用户帐户表
update user_account set user_fee = userfee - @exfee
where userid = @userid

END