SQL server触发器怎么写 10C

t_product 产品表
字段:ID name seed
t_product_file 产品文件表
字段:po_seed c1,c2...

关联条件:po_seed=seed

根据条件,新增一个产品时候,将ID,c1.c2....等批量添加到新产品里面,写一个触发器,谢谢。

10个回答

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
(根据中间处理做相应操作,例子的处理为,将插入的值同步更新到另一个表)

你为什么不写个插入insert语句呢?点击新增产品的时候,做插入操作就行了。

qq_39372401
qq_39372401 这个比较复杂,有很多限制的,不能直接那样做
2 年多之前 回复

基本语法格式
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
(根据中间处理做相应操作,例子的处理为,将插入的值同步更新到另一个表)

qq_24214485
qq_24214485 好难看懂
2 年多之前 回复
qq_24214485
qq_24214485 不会
2 年多之前 回复
qq_39372401
qq_39372401 那我给你上面的条件是干嘛的,你给我看这,搞笑呢大哥
2 年多之前 回复

你给的条件和代码不符合啊大兄弟

什么年代了还用触发器,好久之前就听说这玩意性能不好,找下替代方案吧

支持前面的 写个插入语句时候把其他的数据都写上

insert
1
2
3
4
5
6
7
8
9
10
11
12
13
create trigger tri_insert
on student
for insert
as
declare @student_idchar(10)
select @student_id=s.student_id from students
inner join insertedion s.student_id=i.student_id
if @student_id='0000000001'
begin
raiserror('不能插入1的学号!',16,8)
rollbacktran
end
go
update
1
2
3
4
5
6
7
8
9
10
create trigger tri_update
on student
for update
as
if update(student_id)
begin
raiserror('学号不能修改!',16,8)
rollbacktran
end
go
delete
1
2
3
4
5
6
7
8
9
10
11
create trigger tri_delete
on student
for delete
as
declare @student_idvarchar(10)
select @student_id=student_id from deleted
if @student_id='admin'
begin
raiserror('错误',16,8)
rollbacktran
end

为什么要用sql触发器

CREATE TRIGGER TR_t_product_file_UPD ON t_product_file
FOR INSERT
AS
INSERT t_product( ID, name, seed )
SELECT ISNULL( (SELECT MAX( ID ) FROM t_product ), 0 +1 ), null, z.po_seed
FROM inserted z
WHERE NOT EXISTS( SELECT * FROM t_product y WHERE y.seed = z.po_seed )
GROUP BY z.po_seed

产品名称未知,只能先插入NULL了。
如果这样子出现了重复的产品ID,那么建议产品表的ID用自增长字段,插入的时候不写入,等数据库自动生成。
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问