急!关于SQL触发器的问题

来源:百度知道 编辑:UC知道 时间:2024/06/05 13:47:15
CREATE trigger insertSalerTable on sys_saler_info
after insert
as
declare @salerID int
declare @parentSalerID int
declare @counts int
declare @TopSalerID int
declare @salerCode nvarchar(255)
if @@rowcount>0
begin
select @salerID=salerID,@parentSalerID=parentSalerID from Inserted
select @counts=count(*) from sys_saler_info where parentSalerID=@parentSalerID
select @salerCode=salerCode,@TopSalerID=parentSalerID from sys_saler_info where salerID=@parentSalerID
if @TopSalerID=0
begin
if @counts>100
update sys_saler_info set salerCode=cast((@counts-1) as nvarchar(255)) where salerID=@salerID
else if @counts>10
update sys_saler_info set salerCode='0'+cast((@counts-1) as nvarchar(255)) where salerID=@salerID
else if @counts=0
update sys_saler_info set salerCode='000' where salerID=@salerID
else
update sys_saler_info

修改现有触发器就行了。

alter trigger up3
on dbo.news_list2
for Update
as
insert ceshi2.dbo.shenghe(title,content,[time] )
select title,content,[time] from inserted where type = '1'
delete ceshi2.dbo.shenghe where title =( select title from inserted where type = '0' )
and [content] = (select [content] from inserted where type = '0' )
and [time] = (select [time] from inserted where type = '0' )

因为你更新的时候没有保存id,所以在删除的时候就要逐个匹配才能确定删除。

你可以设置,数据不允许输入为空啊!!
如果你想让CODE保持+1的状态,可以设置CODE的标识为是,标识种子为1!没必要弄触发器;
如果不允许重复插入的,可以参考:
///////插入引发的触发
CREATE TRIGGER trig_name ON dbo.UserZc
FOR INSERT
AS
declare @name char(10)
if(exists(select UserName from UserZc where UserName =(select @name from inserted)))
begin
raiserror ('存在该用户',16,1)
rollback Transaction
end