如果有两条insert 语句,,,一条插入里有自增字段的值,一条没有自增字段的值
请问我该如何让自增字段适应这两条语句?需要建立触发器吗?如果需要,该如何写触发哭?
谢谢各位兄台~~~

解决方案 »

  1.   

    eg:Create Table TEST(ID Int Identity(1, 1), Name Varchar(10))
    GO
    Insert TEST(Name) Select 'A'SET IDENTITY_INSERT TEST ON
    Insert TEST(ID, Name) Select 2, 'B'
    SET IDENTITY_INSERT TEST OFFSelect * From TEST
    GO
    Drop Table TEST
    --Result
    /*
    ID Name
    1 A
    2 B
    */
      

  2.   

    SET IDENTITY_INSERT 表 ON
    执行有自增值的sql
    SET IDENTITY_INSERT 表 off
    执行没有自增值的sql
      

  3.   

    for paoluo(一天到晚游泳的鱼) ,这样可行,但我写的语句在c#中,,, 这样的语句会出语法错误?
    我现在想寻求帮助,,,能不能用trigger搞定?
      

  4.   

    写procedure能解决问题,但我不想写procedure,,,,这样写的code太多,我想用trigger能否搞定?
      

  5.   

    用 Instead   Of 应该可以吧
      

  6.   

    for yahuu(哑猢) ,如何用instead of????请详解?
      

  7.   

    我是在想 Instead   Of 可以在插入数据之前触发事件,你可以在插入之前进行判断,看是否给自增字段赋值。不知道是否可行
      

  8.   

    for yahuu(哑猢) ,语句该如何写呢?
      

  9.   

    Create Table TES(ID Int Identity(1, 1), Name Varchar(10))
    GO
    Insert TEST(Name) Select 'A'CREATE TRIGGER ttt ON tes
      INSTEAD   OF   INSERT 
    AS
    declare
    @i  int,
    @j varchar(10) 
    begin
    select @i=id,@j=name from inserted
    if @i=0
    begin
    insert into tes(name) values(@j)
    end
    end
    go-----------
    我这里只写了if 
    else你自己写,把鱼鱼MM的  SET IDENTITY_INSERT TEST ON 加到else就可以了
      

  10.   

    谢了yahuu(哑猢) ,我先试试
      

  11.   

    我已经试过了,可以的哈CREATE TRIGGER ttt ON tes
      INSTEAD   OF   INSERT 
    AS
    declare
    @i  int,
    @j varchar(10) 
    begin
    select @i=id,@j=name from inserted
    if @i=0
    begin
    insert into tes(name) values(@j)
    end
    else
    begin
    SET IDENTITY_INSERT TES ON
    Insert TES(ID, Name) values(@i,@j)
    SET IDENTITY_INSERT TES OFF
    endend
    ----
    insert into tes(name) values('a')insert into tes(id,name) values(2,'a')
      

  12.   

    可以? 我这边有点小问题
    foryahuu(哑猢) ,能否讲一INSTEAD   OF   INSERT 的作用?
      

  13.   

    我的是可以哈
    sql2000的,INSTEAD   OF   INSERT 就是在你插入数据之前触发,一般的insert触发是插入数据之后触发你看,我都在自增列里加了一个重复的了1 a
    2 a
    3 a
    4 a
    5 a
    5 a
      

  14.   

    呵呵,厉害,,,我这边再试
    但我觉得你这条select @i=id,@j=name from inserted
    有点为明白,,,,变量@j是如何得得到的?
      

  15.   

    不能这样搞诶,因为在执行插入语句的时候,就提示说
    当 IDENTITY_INSERT 设置为 OFF 时  shgjkfdhgjk
    当 IDENTITY_INSERT 设置为 ON 时   gfdhjghsdkg
    我刚才是分开插入的,太2了