存储过程可以直接用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里中存储过程和触发器,如何创建
触发器是一种特殊的存储过程,
2.触发器是在对表进行插入、更新或删除操作时自动执行的存储过程
3.触发器通常用于强制业务规则
4.触发器是一种高级约束,可以定义比用CHECK 约束更为复杂的约束
5.可执行复杂的SQL语句(if/while/case)DELETE 触发器
INSERT 触发器
UPDATE 触发器/*----------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')go
--就是插一条数据进入students中,Tri_insert触发器就会自动在student_Score插入相关的学生的一条分数的数据
insert into students(s_name,s_classId) values('黄驰',6)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
数据库的增删改查类似