‘壹’ 请问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
望采纳!!!
‘贰’ 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 ;
‘叁’ 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
‘肆’ SQL如何创建一个触发器
创建触发器用 CREATE TRIGGER
CREATE TRIGGER 触发器名称
ON 表名
FOR INSERT、UPDATE 或 DELETE
AS T-SQL 语句
注意:触发器名称是不加引号的。
例子:
create trigger jcsj_1
on 表名
for insert
as
begin
update 表名 set 授课门数=授课门数+1 where 教师ID=(select 教师 ID from inserted)
end
详见
http://tech.ddvip.com/2007-01/116783077317261.html
请采纳答案,支持我一下。
‘伍’ sql触发器
CREATE OR REPLACE TRIGGER def$_propagator_trig
//建立触发器名为def$_propagator_trig
BEFORE INSERT ON system.def$_propagator
//当对system.def$_propagator进行插入的时候会执行以下代码
DECLARE
prop_count NUMBER;
//声明标量prop_count,变量声明要在declare和begin之间
BEGIN
SELECT count(*) into prop_count
FROM system.def$_propagator;
//把select语句查询出来的结果赋值给prop_count变量,into作用是赋值
IF (prop_count > 0) THEN //这是IF语句
-- Raise plicate propagator error //这是注释
sys.dbms_sys_error.raise_system_error(-23394);
//如果查询出来的结果是大于0的话,就提示一个 -23394的错误
END IF; //结束IF语句
END; //结束
这跟存储过程的代码差不多,就一点点区别。
够详细了吧,这里面得语法注释是使用: -- XXXXXXX
希望满意 。
这次代码不少了吧?
‘陆’ 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
‘柒’ sql 触发器怎么写
嗯,你要把数据库说清楚,sql server和oracle都是不一样的