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

sql如何创建触发器

发布时间: 2022-09-24 05:08:36

1. sql里中存储过程和触发器,如何创建

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

2. SQL触发器怎么做

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

3. 怎样创建一个sql的触发器

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

4. 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

5. 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表中。

6. SQl中怎么样创建触发器

创建触发器:
Create
Trigger
名称

On
表名

For
类型

As

Sql语句

希望对你有帮助!

7. 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

8. SQL中,如何创建一个有条件的触发器

以 delete 触发为例:

createtriggertri_delete
ona--将要进行更改的表名
fordelete--给表删除一条数据的时候触发
as
declare@aavarchar(10)
select@aa=afromdeleted
if@aa='a'--处理的条件
begin
raiserror('错误',16,8)
rollbacktran
end

触发器效果:删除表a数据,如果a列为‘a’,即阻止删除,提示‘错误’


9. sql server2012如何建立触发器

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

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

  • 6

    数据库的增删改查类似