注册 登录
编程论坛 SQL Server论坛

请教触发该怎么写

jack_xu2046 发布于 2011-01-17 12:42, 688 次点击
不知怎么用
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:        <Author,,Name>
-- Create date: <Create Date,,>
-- Description:    <Description,,>
-- =============================================
CREATE TRIGGER <Schema_Name, sysname, Schema_Name>.<Trigger_Name, sysname, Trigger_Name>
   ON  <Schema_Name, sysname, Schema_Name>.<Table_Name, sysname, Table_Name>
   AFTER <Data_Modification_Statements, , INSERT,DELETE,UPDATE>
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    -- Insert statements for trigger here

END
GO

以上是数据库中新建触发器中默认的。

只有本站会员才能查看附件,请 登录


假如SEQUENCE=4 这一行删除 如何添加删除触发使得 下面 5,6,7等自动减去1
还有如何放一个update触发,使得将4手动改成5后 5,6,7等自动加上1.
2 回复
#2
jack_xu20462011-01-17 14:09
ALTER TRIGGER [dbo].[AutoUpdateSequence]
   ON  [dbo].[ROUTING]
   AFTER UPDATE
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;
DECLARE @mROUTE NVARCHAR(40)
DECLARE @mSEQUENCE SMALLINT
DECLARE @mSTATION nvarchar(20)
DECLARE @mint smallint
set @mint = 1
select @mROUTE = ROUTE,@mSEQUENCE =SEQUENCE,@mSTATION =STATION FROM INSERTED
UPDATE ROUTING SET SEQUENCE = SEQUENCE + @mint WHERE ROUTE =@mROUTE AND SEQUENCE > @mSEQUENCE
END
参照论坛中一些例子,写了一个update的触发。运行结果有点不好,
假如 sequence =7这一行改成sequence =8 想要的结果是下面两个sequence 应该自动变成 9,10
可是是之前的sequence =8没有变,而且按一下执行按钮后sequence =9的才变成sequence =10

#3
C心情2011-01-24 17:41
最好自己写个存储过程,个人觉得少用触发器的好!
1