ALTER TABLE MyTable drop constraint pk_mytable ALTER TABLE MyTable ALTER COLUMN 列名 char(15) NOT NULL 只是不知怎样用语句把主键加回去 正象把一个字段设置为自动增长一样,用sql语句没法办到 不知哪位大虾有办法 要是真没办法,那只能手工做了
在新建列中导入数据,删除原来的主键, 再重建主键 sp_rename 为新列改名
TO:yelook(雨枫) 用你的方法不行,说我的字段不是约束,为何?是不是我多个主键的问题? 我用 ALTER TABLE U_Tool_Info DROP PRIMARY KEY (Tool_ID) 来删除主键,但删除不了。
可以用以下方法找主键名: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')
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]
ALTER TABLE MyTable ALTER COLUMN 列名 char(15) NOT NULL
只是不知怎样用语句把主键加回去
正象把一个字段设置为自动增长一样,用sql语句没法办到
不知哪位大虾有办法
要是真没办法,那只能手工做了
sp_rename 为新列改名
用你的方法不行,说我的字段不是约束,为何?是不是我多个主键的问题?
我用 ALTER TABLE U_Tool_Info DROP PRIMARY KEY (Tool_ID) 来删除主键,但删除不了。
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')
sp_pkeys ‘orders’获得表orders的主键名然后再用yelook(雨枫) 的方法去掉主键,
然后再用pengdali(大力) 的方法修改字段属性.
再用 happydreamer(绝对的黑) 的方法加上主键。
to :yelook(雨枫) 见happydreamer(绝对的黑) 的方法
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]