A. sql触发器 怎么写
delimiter $
create trigger getdate after insert on users for each row
begin
insert into date(csrq) values(date(substring(new.sfzhm,7,8)));
end
delimiter ;
B. SQL中存储过程,触发器,都做什么用的啊,具体写在什么地方呢~
存储过程就是 T-SQL 的批处理(可以带入参数),就像执行SQL语句一样执行存储过程的名字
触发器定义在数据库的表上,在表中数据增、删、改时触发
C. sql server里面的触发器怎么写
基本语法
create trigger tri_name
on table
for insert/update/deleted
as
SQL code
例:
create trigger tri_mc(tri_mc:自定义触发器的名称)
on table (table:触发的表名)
for insert (触发类型:insert,插入数据触发 update,更新数据触发 delete,删除数据触发)
as
declare @kssj datetime (定义一个变量,做中间处理)
declare @sqbh char(40)
select @kssj = kssj,@sqbh = sqbh from inserted
(插入数据时,插入的数据在表 inserted
更新数据时,更新后的数据在表 inserted 更新前的数据在表中 deleted
删除数据时,删除的数据在表 deleted
不同的操作可以,取出不同的中间数据,做处理,例子中取出插入的数据)
update table2 set isks = 1,kksj = @kssj where sqbh = @sqbh
(根据中间处理做相应操作,例子的处理为,将插入的值同步更新到另一个表)
D. SQL触发器在存放在哪个位置
表里面就有一个子项叫触发器,如果是存放位置,触发器实例存在了系统数据库 master里面
E. SQL 触发器怎么写
CREATETRIGGER[dbo].[TRG_A]
ON[dbo].[A]
AFTERUPDATE
AS
BEGIN
INSERTINTOB
(
[FILD]
,[BEFORE]
,[AFTER]
)
SELECT'DATE'
,DEL.[DATE]
,UPD.[DATE]
FROMDELETEDDEL
INNERJOININSERTEDUPD
ONDEL.ID=UPD.ID
ANDDEL.[DATE]!=UPD.[DATE];
INSERTINTOB
(
[FILD]
,[BEFORE]
,[AFTER]
)
SELECT'NAME'
,DEL.[NAME]
,UPD.[NAME]
FROMDELETEDDEL
INNERJOININSERTEDUPD
ONDEL.ID=UPD.ID
ANDDEL.[NAME]!=UPD.[NAME]
END
F. 请问sql server的触发器怎么写它是放在服务器哪块没用过请高手指导下
触发器的创建语法:
Create Trigger 触发器名称
On Student--在Student表中创建触发器
for Update --在修改的时候出发下面的语句 ;也可能是for insert,for delete;也就是说,触发器有三种出发机制:插入,修改,删除;
As --事件触发后所要做的事情
if Update(StudentID)
begin
Update BorrowRecord
Set StudentID=i.StudentID
From BorrowRecord br , Deleted d ,Inserted i --Deleted和Inserted临时表
Where br.StudentID=d.StudentID
end
望采纳!!!
G. 请问SQL触发器用在什么地方 ...求解...
先说触发器,再说好处和坏处
-------------------------------
触发器,主要是用来同步更新数据的,杂乱枯燥的文章不给你转了,看起来累,举个例子吧:
假设有两个表,tab_1 , tab_2
再假设两个表里都有“人员性别”这个字段
tab_1的数据例如: 张三```男```1978`````2002
tab_2的数据例如: 张三```男```销售科```科长
我要改tab_1中张三的性别为“女”的话,那么tab_2的性别也该改为“女”,对吧,总不能两张表的性别不同吧。
如果不用触发器的话,我们就要改完tab_1,再去改tab_2,使性别都变成女
于是这里可以用到触发器了:
原理是:当tab_1中某人的性别发生变更后,数据库自动将tab_2的性别进行同步修改
触发器也可以这样应用:
1、当删除tab_1中的某人信息时,触发器一并删除该人的tab_2中的数据
2、在tab_1中新插入一个人员时,触发器在tab_2中一并新增一条该人的数据
===================================================================================
所以在你建立触发器时,就要指定该触发器的用途,是同步更新,还是删除、插入,由你指定。
基本的语法规则是:
create trigger 触发器名称(你自己命名的) on 表 for 用途(delete|update|insert)
as
delete|update|insert语句
----------------------------------------------------------------------
例如:
create trigger tri_A on tab_1 FOR DELETE
AS
delete tab_2 from deleted where tab_2.id = deleted.id;
意思是:在tab_1表上,建立触发器(tri_A),用于删除该表的数据时触发一个事务,什么事务呢?——删除tab_2中的该编号人员的记录。
FOR INSERT、FOR UPDATE分别是建立用于“插入记录”、“更新数据”的触发器,例子里的FOR DELETE是用于触发“删除记录”的。
这里还要看清楚,那个delete语句中的表,是from deleted哦,还有,where子句的tab_2.id = deleted.id,不是tab_2.id = tab_1.id哦,deleted.id是指你刚删除的那条记录的id(而update、insert,都用inserted.id)
===================================================================================
好处:相对于外部程序、存储过程,触发器可以更快更高效的维护数据
坏处:(我自己的经验)触发器要用的恰到好处,一个大型应用里,触发器越少越好,触发器会使编程时源码的结构被迫打乱,为将来的程序修改、源码阅读带来很大不便。
H. SQL触发器在存放在哪个位置
放在需要触发条件的表下面,例如下面的on后面跟的[dbo].[A01]就是给哪个表触发
ALTER TRIGGER [dbo].[A01_UPDATE_A815]
ON [dbo].[A01]
AFTER UPDATE
AS
BEGIN
SELECT A0188 INTO #A0188 FROM INSERTED
IF UPDATE ("A0191") OR UPDATE ("EXT072")
I. sql server里面的触发器怎么写
仔细看看这段代码:
Update BorrowRecord
Set br.StudentID=i.StudentID
From BorrowRecord br , Deleted d ,Inserted i
Where br.StudentID=d.StudentID
From BorrowRecord br , Deleted d ,Inserted i
表示用别名br来代替BorrowRecord ,用d来代替Deleted,用d来代替Inserted。
明白了么?
Good Luck!
J. SQL触发器写法
触发器(trigger)是SQL server 提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作( insert,delete, update)时就会激活它执行。触发器经常用于加强数据的完整性约束和业务规则等。 触发器可以从 DBA_TRIGGERS ,USER_TRIGGERS 数据字典中查到。SQL3的触发器是一个能由系统自动执行对数据库修改的语句。
语法:
DELIMITER |
CREATE TRIGGER `<databaseName>`.`<triggerName>`
< [ BEFORE | AFTER ] > < [ INSERT | UPDATE | DELETE ] >
ON [dbo]<tableName> //dbo代表该表的所有者
FOR EACH ROW
BEGIN
--do something
END |
例子:
-- 插入时执行触发器
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
create trigger [dbo].[rscOpenInsert]
on [dbo].[RSC_INFO]
for insert
as www.2cto.com
DECLARE
@v_rscID varchar(50),
@v_status int
begin
select @v_rscID=rscID,@v_status=status from inserted;
--取得当前资源信息status>4 才插入信息
if @v_status > 4
begin
insert into RSC_OPEN_SYNCHRONOUS(rscID,opStatus,opDateTime) values (@v_rscID,'insert',getDate())
end
end
--- 更新时执行触发器
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
create trigger [dbo].[rscOpenUpdate]
on [dbo].[RSC_INFO]
for update
as
DECLARE
@v_rscID varchar(50),
@v_status int
begin www.2cto.com
select @v_rscID=rscID,@v_status=status from inserted;
--取得当前资源信息status>4 才更新信息
if @v_status > 4
begin
update RSC_OPEN_SYNCHRONOUS set opStatus = 'update', opDateTime = getDate() where rscID=@v_rscID
end
end