sql server中如何把一个字段改成自增型字段 找进销存系统
alter table aa alter column bb int IDENTITY NOT NULL
不过总说有语法错误。
谢谢!
2楼: 去企业管理器修改吧
这里不可以修改 如仓库管理
3楼: 企业管理器,表设计,字段改为int型,然后下面属性为 标识 为是
4楼: 请问各位有sql语句可以改的吗?
5楼: 有吧,但我不懂。呵呵,你干嘛非得要语句来实现啊
6楼: 呵呵,为了方便别人。
仓库管理软件版7楼: 或者你可以建触发器
8楼: 我找到方法了:
1、删除主键
2、删除列
3、创建列
alter table aa drop PK__acsxm__1ED10DBF (原表以bb列为主键,PK__acsxm__1ED10DBF为主键名)
alter table aa drop column bb
alter table aa add bb int IDENTITY(1,1)
9楼: 因为这一列有数据,所有不能删除,能直接修改吗?
10楼: 设计表时,字段类型选INT,定为“标识种子”就可以了
11楼: 首先这列的值符合IDENTITY的条件吗?
如果不符合,那就不能修改了。
只能删除,在重新建立
12楼: 新列才可以 identity 如汽车维修管理软件
13楼: 用企業管理器或SQL語句修改基本表就可以了。
仓库管理软件版14楼: 已经有数据的列好像不能改成自增型的吧
15楼: 你可以增加一个字段
select identity(int, 1,1) as AutoID , * from aa
这样就可自增一个唯一标示的字段
16楼: 你先建个自增的字段,再导出脚本看看就知道了不是?
17楼: alter table aa add column bb int IDENTITY
18楼: 建立数据表时直接设为种子不就可以了吗?
或者到处脚本再看看里面的代码。
19楼: 很遗憾的告诉你. 没有办法用简单的SQL 语句完成.必须借助一个中间表,即使在企业管理器,表设计中修改.它也是如此,先建立一个零时表->把修改列的IDENTITY设好-> 把原表中的数据导入->接着DROP 原表->修改新表名为原表名.
你可以打开SQL 跟踪下, 在企业管理器修改表的某项为IDENTITY,保存后企业管理器的做法就知其原理!
20楼: 把原来的字段删除,再重新添加新的
alter table aa add bb int identity(1,1) not null
仓库管理软件版21楼: 同意Jhdandcl
新建列F_DstCol
复制F_SrcCol的值到F_DstCol
删除F_SrcCol列
22楼: 写个存储过程,字段标识使用 一个字母+数字(自动判断增加)的形式。如下:
CREATE procedure Insert_Pepole_Date
@pDABM nvarchar(50),--档案编码
as
--截取第一个字符
DECLARE @str nvarchar(1)
DECLARE @int int
select @str=substring(@pDABM,1,1)
--获得该类型员工的最大标号值
--如果存在记录
IF EXISTS (select DABM from pepole_date where DABM like @str+''%'')
begin
select @int=max(SUBSTRING(DABM,2,LEN(DABM)-1)+1-1) from pepole_date where DABM like @str+''%''
select @int=@int+1
select @pDABM=RTRIM(@str)+LTRIM(str(@int))
end
else
--如果不存在就为1
begin
select @pDABM=@str+''1''
end
insert into pepole_date values(@pDABM)
GO 如进销存系统