--表MyLS中的insert存储过程
IF OBJECT_ID('P_INSERT2')IS NOT NULL
DROP PROC P_INSERT2
GO
CREATE PROC P_INSERT2
@NAME VARCHAR(10),
@AGE INT,
@SEX CHAR(2),
@TELEPHONE VARCHAR(20),
@MAIL VARCHAR(30),
@CAPTION VARCHAR(1000)
AS
INSERT INTO dbo.MyLS(MyName,MyAge,MySex,MyTelephone,MyMail,MyCaption)VALUES(@NAME,@AGE,@SEX,@TELEPHONE,@MAIL,@CAPTION)
GO
麻烦各位大虾写下调用这个存储过程的触发器

解决方案 »

  1.   

    CREATE TRIGGER TRI_IN_事件表 ON 事件表 FRO INSERT
    AS
        INSERT dbo.MyLS(列名....) SELECT 列名 FROM INSERTED
      

  2.   

    create trigger mr_tr on tb
    for insert
    as
    declare @NAME VARCHAR(10),
    @AGE INT,
    @SEX CHAR(2),
    @TELEPHONE VARCHAR(20),
    @MAIL VARCHAR(30),
    @CAPTION VARCHAR(1000)
    select @NAME=name,@Age=age,@sex=sex,@TELEPHONE =TELEPHONE ,@MAIL=MAIL , @CAPTION=CAPTION from inserted  
    exec P_INSERT2 @NAME ,@AGE,@SEX,@TELEPHONE,@MAIL,@CAPTIONGO
    --此触发器有极限性,就是批量插入时只能执行插入第一条记录中。--楼主的实现方式应该需要修改。
      

  3.   

    IF OBJECT_ID('S_TRIGGER')IS NOT NULL
    DROP TRIGGER S_TRIGGER
    GO
    CREATE TRIGGER S_TRIGGER on tb
    FOR INSERT
    AS
    DECLARE 
    @NAME VARCHAR(10),
    @AGE INT,
    @SEX CHAR(2),
    @TELEPHONE VARCHAR(20),
    @MAIL VARCHAR(30),
    @CAPTION VARCHAR(1000)
    SELECT @NAME=MyNAME,@AGE=MyAge,@SEX=MySex,@TELEPHONE=MyTelephone,@MAIL=MyMail,@CAPTION=MyCaption from inserted
    exec P_INSERT2 @NAME ,@AGE,@SEX,@TELEPHONE,@MAIL,@CAPTION
    GO/**消息 207,级别 16,状态 1,过程 S_TRIGGER,第 11 行
    列名 'MyNAME' 无效。
    消息 207,级别 16,状态 1,过程 S_TRIGGER,第 11 行
    列名 'MyAge' 无效。
    消息 207,级别 16,状态 1,过程 S_TRIGGER,第 11 行
    列名 'MySex' 无效。
    消息 207,级别 16,状态 1,过程 S_TRIGGER,第 11 行
    列名 'MyTelephone' 无效。
    消息 207,级别 16,状态 1,过程 S_TRIGGER,第 11 行
    列名 'MyMail' 无效。
    消息 207,级别 16,状态 1,过程 S_TRIGGER,第 11 行
    列名 'MyCaption' 无效。**/怎么会报这样的错啊
      

  4.   


    TRI_IN_事件表 and 事件表 这个可以说明白点吗? 我不是很懂!
      

  5.   

    TONY哥,如果一次性插入多条会有问题吧?其实没明白楼主的用意
      

  6.   

    你的过程有问题改为如下:--表MyLS中的insert存储过程
    IF OBJECT_ID('P_INSERT2')IS NOT NULL
    DROP PROC P_INSERT2
    GO
    CREATE PROC P_INSERT2
    @NAME VARCHAR(14),
    @AGE INT,
    @SEX VARCHAR(4),
    @TELEPHONE VARCHAR(20),
    @MAIL VARCHAR(30),
    @CAPTION VARCHAR(1000)
    AS
    SET @NAME=''''+@NAME+''''
    SET @SEX=''''+@SEX+''''
    SET @TELEPHONE=''''+@TELEPHONE+''''
    SET @MAIL=''''+@MAIL+''''
    SET @CAPTION=''''+@CAPTION+''''
    INSERT INTO dbo.MyLS(MyName,MyAge,MySex,MyTelephone,MyMail,MyCaption)VALUES(@NAME,@AGE,@SEX,@TELEPHONE,@MAIL,@CAPTION)
    GO
      

  7.   


    --表MyLS中的insert存储过程
    IF OBJECT_ID('P_INSERT3')IS NOT NULL
    DROP PROC P_INSERT3
    GO
    CREATE PROC P_INSERT3
    @NAME VARCHAR(14),
    @AGE INT,
    @SEX VARCHAR(4),
    @TELEPHONE VARCHAR(20),
    @MAIL VARCHAR(30),
    @CAPTION VARCHAR(1000)
    AS
    SET @NAME=''''+@NAME+''''
    SET @SEX=''''+@SEX+''''
    SET @TELEPHONE=''''+@TELEPHONE+''''
    SET @MAIL=''''+@MAIL+''''
    SET @CAPTION=''''+@CAPTION+''''
    INSERT INTO dbo.MyLS(MyName,MyAge,MySex,MyTelephone,MyMail,MyCaption)VALUES(@NAME,@AGE,@SEX,@TELEPHONE,@MAIL,@CAPTION)
    GOIF OBJECT_ID('mr_tr')IS NOT NULL
    DROP TRIGGER mr_tr
    GO
    create trigger mr_tr on tb
    for insert
    as
    declare 
    @NAME VARCHAR(10),
    @AGE INT,
    @SEX CHAR(2),
    @TELEPHONE VARCHAR(20),
    @MAIL VARCHAR(30),
    @CAPTION VARCHAR(1000)
    select @NAME=MyName,@Age=MyAge,@sex=MySex,@TELEPHONE=MyTelephone ,@MAIL=MyMail , @CAPTION=MyCaption from inserted  
    exec P_INSERT3 @NAME ,@AGE,@SEX,@TELEPHONE,@MAIL,@CAPTION
    GO
    消息 207,级别 16,状态 1,过程 mr_tr,第 11 行
    列名 'MyName' 无效。
    消息 207,级别 16,状态 1,过程 mr_tr,第 11 行
    列名 'MyAge' 无效。
    消息 207,级别 16,状态 1,过程 mr_tr,第 11 行
    列名 'MySex' 无效。
    消息 207,级别 16,状态 1,过程 mr_tr,第 11 行
    列名 'MyTelephone' 无效。
    消息 207,级别 16,状态 1,过程 mr_tr,第 11 行
    列名 'MyMail' 无效。
    消息 207,级别 16,状态 1,过程 mr_tr,第 11 行
    列名 'MyCaption' 无效。
    我现在完全按你们的方法用了啊 怎么还报这样的错误 这是什么原因啊
      

  8.   


    按照你这个写法还是出错,我把
    select @NAME=name,@Age=age,@sex=sex,@TELEPHONE =TELEPHONE ,@MAIL=MAIL , @CAPTION=CAPTION from inserted  
    exec P_INSERT2 @NAME ,@AGE,@SEX,@TELEPHONE,@MAIL,@CAPTION
    --改成了
    select @NAME=m.MyName,@Age=m.MyAge,@sex=m.MySex,@TELEPHONE=m.MyTelephone ,@MAIL=m.MyMail , 
    @CAPTION=m.MyCaption from Inserted,MyLS m
    exec P_INSERT2 @NAME ,@AGE,@SEX,@TELEPHONE,@MAIL,@CAPTION然后再将INSERT INTO dbo.MyLS(MyName,MyAge,MySex,MyTelephone,MyMail,MyCaption)VALUES(@NAME,@AGE,@SEX,@TELEPHONE,@MAIL,@CAPTION)
    GO
    --修改为:
    select @NAME,@AGE,@SEX,@TELEPHONE,@MAIL,@CAPTION;
    --然后运行,结果报字符串越界错误!
    --原因
    SET @NAME=''''+@NAME+''''
    SET @SEX=''''+@SEX+''''
    SET @TELEPHONE=''''+@TELEPHONE+''''
    SET @MAIL=''''+@MAIL+''''
    SET @CAPTION=''''+@CAPTION+''''
    --因为在数据库中SEX是char(2)长度,你这里用上'''',在代码中没错,但是在插入数据库时候就会出问题了!
    --最后修改一点
    @NAME NVARCHAR(20),
    @AGE INT,
    @SEX VARCHAR(2),
    @TELEPHONE NVARCHAR(30),
    @MAIL NVARCHAR(30),
    @CAPTION NVARCHAR(1000)OK 搞掂!