在一个数据库的很多表中有一个是自增字段且为主键的字段: id,
请问有没有简单的方法将此字段(id),修改成不是自增也不是主键约束的?当然用查看哪个表中有此字段,再一个一个表的修改肯定是可以的,我现在想找一种快捷的方法。
先谢了!

解决方案 »

  1.   

    DECLARE @ObjName  VARCHAR(100)
    DECLARE MyCur CURSOR  
    FOR
        SELECT name 
        FROM sysobjects
        WHERE xtype = 'u'  
    OPEN  MyCur  
    FETCH MyCur INTO @ObjName  
    WHILE @@Fetch_Status=0
    BEGIN
        EXEC ('alter table ['+@ObjName+'] add id1 int')
        EXEC ('update ['+@ObjName+'] set id1=id')
        EXEC ('alter table ['+@ObjName+'] drop column ID')
        FETCH MyCur INTO @ObjName
    END  
    CLOSE MyCur  
    DEALLOCATE MyCur  不考虑被外键关联
      

  2.   

    DECLARE @ObjName  VARCHAR(100)
    DECLARE MyCur CURSOR  
    FOR
        SELECT name 
        FROM sysobjects
        WHERE xtype = 'u'  
    OPEN  MyCur  
    FETCH MyCur INTO @ObjName  
    WHILE @@Fetch_Status=0
    BEGIN
        EXEC ('alter table ['+@ObjName+'] add id1 int')
        EXEC ('update ['+@ObjName+'] set id1=id')
        EXEC ('alter table ['+@ObjName+'] drop column ID')
        EXEC ('exec sp_rename ''['+@ObjName+'].id1'',''id'',''column''')
        FETCH MyCur INTO @ObjName
    END  
    CLOSE MyCur  
    DEALLOCATE MyCur  改一下。
      

  3.   

    declare mycur cursor
    for后面的改为select name from sysobjects where xtype='U'
    and id in(select id from syscolumns where name='sdid')会不会要好一点呢?