转-用sql语句将一个表的字段改为主键自增

create   table   ttt  
  (  
  t1   int,  
  t2   varchar(8)  
  )  
   
  現在想把字段t1設為自增字段和主鍵.  
   
  那麼運行下面的代碼:  
  CREATE   TABLE   dbo.Tmp_ttt  
  (  
  t1   int   NOT   NULL   IDENTITY   (1,   1),  
  t2   varchar(8)   NULL  
  )  
  go  
  SET   IDENTITY_INSERT   dbo.Tmp_ttt   ON  
  go  
  IF   EXISTS(SELECT   *   FROM   dbo.ttt)  
    EXEC('INSERT   INTO   dbo.Tmp_ttt   (t1,   t2)  
  SELECT   t1,   t2   FROM   dbo.ttt   TABLOCKX')  
  go  
  SET   IDENTITY_INSERT   dbo.Tmp_ttt   OFF  
  go  
  DROP   TABLE   dbo.ttt  
  go  
  EXECUTE   sp_rename   N'dbo.Tmp_ttt',   N'ttt',   'OBJECT'  
  go  
  ALTER   TABLE   dbo.ttt   ADD   CONSTRAINT  
  PK_ttt   PRIMARY   KEY   CLUSTERED    
  (  
  t1  
  )   ON   [PRIMARY]  
  COMMIT  
   
   
  為什麼不用  
  alter   table   ttt   drop   column   t1  
  go  
  alter   table   ttt   add   t1   identity(1,1)   not   null  
  go  
  alter   table   ttt   add   constrain   primary   key   pk_t   (t1)  
  的方法.  
   
  是因為先刪掉一列.再增加一列.  
  那麼列的順序就改變了.  
  有可能帶來意想不到的問題.  
  (比方說,你的程序中有個insert語句是沒有寫字段名的) 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值