试试:
ALTER TABLE MyTable ALTER COLUMN 列名 char(15) NOT NULL

解决方案 »

  1.   

    ALTER TABLE MyTable drop constraint pk_mytable
    ALTER TABLE MyTable ALTER COLUMN 列名 char(15) NOT NULL
    只是不知怎样用语句把主键加回去
    正象把一个字段设置为自动增长一样,用sql语句没法办到
    不知哪位大虾有办法
    要是真没办法,那只能手工做了
      

  2.   

    在新建列中导入数据,删除原来的主键, 再重建主键
    sp_rename 为新列改名
      

  3.   

    TO:yelook(雨枫)
    用你的方法不行,说我的字段不是约束,为何?是不是我多个主键的问题?
    我用 ALTER TABLE U_Tool_Info DROP PRIMARY KEY (Tool_ID) 来删除主键,但删除不了。
      

  4.   

    加主键的语句alter table tablename add  CONSTRAINT pk_tablename PRIMARY KEY  NONCLUSTERED (columnname)
      

  5.   

    可以用以下方法找主键名:create function get_primarykey_name (@tablename varchar(256))
    returns varchar(256)
    as
    begin
      declare @pk_name varchar(256)
      select @pk_name =object_name(constid) from sysconstraints 
          where ( OBJECTPROPERTY (constid,'CnstIsClustKey') =1 
          or OBJECTPROPERTY (constid,'CnstIsNonclustKey') =1)
          and object_name(id)=@tablename
      return @pk_name
    end  
    go
    select dbo.get_primarykey_name('test')
      

  6.   

    也可以用
    sp_pkeys ‘orders’获得表orders的主键名然后再用yelook(雨枫) 的方法去掉主键,
    然后再用pengdali(大力) 的方法修改字段属性.
    再用 happydreamer(绝对的黑) 的方法加上主键。
    to :yelook(雨枫)  见happydreamer(绝对的黑) 的方法
      

  7.   

    1、删除主键
    ALTER TABLE TableName DROP CONSTRAINT PKname
    2、改字段长度
    ALTER TABLE TableName ALTER COLUMN PKcolname char(15) NOT NULL
    3、恢复主键
    ALTER TABLE [dbo].[TableName] WITH NOCHECK ADD 
    CONSTRAINT [PKname] PRIMARY KEY  CLUSTERED 
    (
    [PKcolname]
    )  ON [PRIMARY]