我要用insert into table(id,name) values(4,周玉)插入。A: insert into table ([name]) values ('周玉')把(2,李四)改为(2,john)又该怎么做?A: update table set [name]='john' where [name]='李四'
  或 update table set [name]='john' where [id]=2

解决方案 »

  1.   

    --现在想把(4,周玉)的数据插入其中怎么做?--如果不能确保下一个id是4(因为曾经删除过记录)
    set identity_insert 表 on
    insert 表(id,name) values(4,'周玉')
    set identity_insert 表 off--如果能保证下一个id是4
    insert 表(name) values('周玉')--把(2,李四)改为(2,john)又该怎么做?
    update 表 set name='john' where id=2
      

  2.   

    --现在想把(4,周玉)的数据插入其中怎么做?--如果不能确保下一个id是4(因为曾经删除过记录)
    set identity_insert 表 on
    insert 表(id,name) values(4,'周玉')
    set identity_insert 表 off--如果能保证下一个id是4
    insert 表(name) values('周玉')--把(2,李四)改为(2,john)又该怎么做?
    update 表 set name='john' where id=2
      

  3.   

    set identity_insert 表 on 可以让你在标识字段中插入值SET IDENTITY_INSERT
    允许将显式值插入表的标识列中。语法
    SET IDENTITY_INSERT [ database.[ owner.] ] { table } { ON | OFF }参数
    database是指定的表所驻留的数据库名称。owner是表所有者的名称。table 是含有标识列的表名。注释
    任何时候,会话中只有一个表的 IDENTITY_INSERT 属性可以设置为 ON。如果某个表已将此属性设置为 ON,并且为另一个表发出了 SET IDENTITY_INSERT ON 语句,则 Microsoft® SQL Server™ 返回一个错误信息,指出 SET IDENTITY_INSERT 已设置为 ON 并报告此属性已设置为 ON 的表。如果插入值大于表的当前标识值,则 SQL Server 自动将新插入值作为当前标识值使用。SET IDENTITY_INSERT 的设置是在执行或运行时设置,而不是在分析时设置。权限
    执行权限默认授予 sysadmin 固定服务器角色和 db_owner 及 db_ddladmin 固定数据库角色以及对象所有者。
      

  4.   

    set identity_insert 表 on
    update table set id=8 where [name]='李四'--这样行不行--我要改变identity列的值 怎么做 
    --不会要删掉记录,从新再插入吧
      

  5.   

    标识字段是不能修改的,这是SQL的规定.你只能删除掉,再重新插入.
      

  6.   

    以下纯属个人看法除非你能保证你的任何一句SQL语句中都不出现识别种子的字段名
    否则不要使用识别种子
    既然你要使用这个字段
    就不要将这个字段的维护交给数据库自己来维护既然你已经将这个字段的值完全交给系统自己来维护
    那你就不要对这个字段的值的可维护性有什么奢求所以我做设计的时候从来不使用识别种子
    除非不得不用的情况