当前位置:首页 » 编程语言 » sql创建触发器

sql创建触发器

发布时间: 2022-09-20 08:05:23

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里中存储过程和触发器,如何创建

存储过程可以直接用sql语句创建,触发器可以在表修改中创建
Create
Procere
name
As

③ 怎么创建SQL表UPDATE触发器

触发器是一种特殊的存储过程,类似于其它编程语言中的事件函数,SQL
Server??
允许为
INSERT、UPDATE、DELETE
创建触发器,当在表(视图)中插入、更新、删除记录时,触发一个或一系列
T-SQL
语句。
1:创建触发器:
??触发器可以在企业管理器里创建,也可以在表名上点右键->“所有任务”->“管理触发器”来创建。
??用
CREATE
TRIGGER创建触发器CREATE
TRIGGER
触发器名称
ON
表名
FOR
INSERT、UPDATE

DELETE
AS
T-SQL
语句例:
USE
Northwind
CREATE
TRIGGER
Category_Delete
ON
Categories
FOR
DELETE
AS
UPDATE
P
SET
Discontinued
=
1
FROM
Procts
AS
P
INNER
JOIN
deleted
AS
d
ON
P.CategoryID
=
d.CategoryID

④ SQl中怎么样创建触发器

创建触发器:
Create
Trigger
名称

On
表名

For
类型

As

Sql语句

希望对你有帮助!

c语言怎么使用sql触发器

c语言怎么使用sql触发器:
定义: 何为触发器?在SQL Server里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序。触发器是一个特殊的存储过程。
常见的触发器有三种:分别应用于Insert , Update , Delete 事件。

我为什么要使用触发器?比如,这么两个表:

Create Table Student( --学生表
StudentID int primary key, --学号
....
)

Create Table BorrowRecord( --学生借书记录表
BorrowRecord int identity(1,1), --流水号
StudentID int , --学号
BorrowDate datetime, --借出时间
ReturnDAte Datetime, --归还时间
...
)

用到的功能有:
1.如果我更改了学生的学号,我希望他的借书记录仍然与这个学生相关(也就是同时更改借书记录表的学号);
2.如果该学生已经毕业,我希望删除他的学号的同时,也删除它的借书记录。
等等。

这时候可以用到触发器。对于1,创建一个Update触发器:

Create Trigger truStudent
On Student --在Student表中创建触发器
for Update --为什么事件触发
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

理解触发器里面的两个临时的表:Deleted , Inserted 。注意Deleted 与Inserted分别表示触发事件的表“旧的一条记录”和“新的一条记录”。
一个数据库系统中有两个虚拟表用于存储在表中记录改动的信息,分别是:
虚拟表Inserted 虚拟表Deleted

在表记录新增时 存放新增的记录 不存储记录
修改时 存放用来更新的新记录 存放更新前的记录
删除时 不存储记录 存放被删除的记录

一个Update 的过程可以看作为:生成新的记录到Inserted表,复制旧的记录到Deleted表,然后删除Student记录并写入新纪录。

对于2,创建一个Delete触发器
Create trigger trdStudent
On Student
for Delete
As
Delete BorrowRecord
From BorrowRecord br , Delted d
Where br.StudentID=d.StudentID

从这两个例子我们可以看到了触发器的关键:A.2个临时的表;B.触发机制。

⑥ sql server2012如何建立触发器

  • 首先你当然要有一个数据库了,这里我使用自己创建的数据库booksDB。

    在数据库booksDB上创建触发器,右击触发器->新建触发器,打开之后的界面如下所示

  • 6

    数据库的增删改查类似

⑦ 怎样创建一个sql的触发器

视图是虚拟表,不能建触发器,只能在基本表上建

⑧ SQL触发器怎么做

二楼的说的对,insert
into...select
语句是复制表a的数据到表b里,而且表2不能自定义,是由语句创建的,如果表b已经存在则会出错.
如果楼主要执行insert
into...select,首先要判断插入的表是否已经存在,如果存在要将其删除后在执行.
楼主如果你只是想把刚插入的数据的那3列在插入到另一个表里,完全没必要那样做,直接从inserted表(这个表只在insert触发器适用)里读就能读的到刚插入的内容了,读取出来后在用insert
语句插入到另一个表即可.

⑨ SQL里中存储过程和触发器,如何创建

  1. 触发器是一种特殊的存储过程,
    2.触发器是在对表进行插入、更新或删除操作时自动执行的存储过程
    3.触发器通常用于强制业务规则
    4.触发器是一种高级约束,可以定义比用CHECK 约束更为复杂的约束
    5.可执行复杂的SQL语句(if/while/case)

  2. DELETE 触发器
    INSERT 触发器
    UPDATE 触发器

  3. /*----------Insert 插入 触发器------------*/
    Create Trigger Tri_insert
    on students /*针对某个表,触发器是建立在表关系上的*/
    for insert /*采用的是哪种触发器*/
    as
    declare @stu_id int;
    declare @stu_score varchar(200);
    select @stu_id=s_id from inserted /*这里的Inserted 是在创建触发器时候 系统自动创建的内存表*/
    insert into student_Score(s_id,ss_score)values(@stu_id,'100')

  4. go
    --就是插一条数据进入students中,Tri_insert触发器就会自动在student_Score插入相关的学生的一条分数的数据
    insert into students(s_name,s_classId) values('黄驰',6)

  5. select * from student_Score

⑩ sql触发器的创建

# 创建insert类型触发器
--创建insert插入类型触发器
if (object_id('tgr_classes_insert', 'tr') is not null)
drop trigger tgr_classes_insert
go
create trigger tgr_classes_insert
on classes
for insert --插入触发
as
--定义变量
declare @id int, @name varchar(20), @temp int;
--在inserted表中查询已经插入记录信息
select @id = id, @name = name from inserted;
set @name = @name + convert(varchar, @id);
set @temp = @id / 2;
insert into student values(@name, 18 + @id, @temp, @id);
print '添加学生成功!';
go
--插入数据
insert into classes values('5班', getDate());
--查询数据
select * from classes;
select * from student order by id;
insert触发器,会在inserted表中添加一条刚插入的记录。

# 创建delete类型触发器
--delete删除类型触发器
if (object_id('tgr_classes_delete', 'TR') is not null)
drop trigger tgr_classes_delete
go
create trigger tgr_classes_delete
on classes
for delete --删除触发
as
print '备份数据中……';
if (object_id('classesBackup', 'U') is not null)
--存在classesBackup,直接插入数据
insert into classesBackup select name, createDate from deleted;
else
--不存在classesBackup创建再插入
select * into classesBackup from deleted;
print '备份数据成功!';
go
--
--不显示影响行数
--set nocount on;
delete classes where name = '5班';
--查询数据
select * from classes;
select * from classesBackup;
delete触发器会在删除数据的时候,将刚才删除的数据保存在deleted表中。

# 创建update类型触发器
--update更新类型触发器
if (object_id('tgr_classes_update', 'TR') is not null)
drop trigger tgr_classes_update
go
create trigger tgr_classes_update
on classes
for update
as
declare @oldName varchar(20), @newName varchar(20);
--更新前的数据
select @oldName = name from deleted;
if (exists (select * from student where name like '%'+ @oldName + '%'))
begin
--更新后的数据
select @newName = name from inserted;
update student set name = replace(name, @oldName, @newName) where name like '%'+ @oldName + '%';
print '级联修改数据成功!';
end
else
print '无需修改student表!';
go
--查询数据
select * from student order by id;
select * from classes;
update classes set name = '五班' where name = '5班';
update触发器会在更新数据后,将更新前的数据保存在deleted表中,更新后的数据保存在inserted表中。

热点内容
vc60非静态编译 发布:2025-01-11 10:51:32 浏览:613
电脑上怎么解压缩文件 发布:2025-01-11 10:51:31 浏览:782
枪战王者如何用账号密码登录 发布:2025-01-11 10:30:56 浏览:936
mysql在linux下安装 发布:2025-01-11 10:30:49 浏览:843
数据库copy 发布:2025-01-11 10:26:06 浏览:533
unity清理缓存 发布:2025-01-11 10:25:23 浏览:466
优酷视频双击上传 发布:2025-01-11 10:24:41 浏览:963
存储脐带胎儿干细胞 发布:2025-01-11 10:18:36 浏览:330
实简ftp软件怎么改服务器文件 发布:2025-01-11 10:09:39 浏览:555
qb充值源码 发布:2025-01-11 10:00:21 浏览:27