我想向现有旧数据库添加一列,然后编写一个过程,通过该过程可以为每条记录分配一个不同的值。就像添加一列并为其自动生成数据一样。如果我添加一个名为“ID”(数字)的新列,我想为每个记录初始化一个唯一值。所以,我的ID列将有从1到1000的记录。我该怎么做?向现有表添加一列,并为其添加唯一编号
回答
这将取决于数据库上,但为SQL Server,这可以实现如下:
alter table Example
add NewColumn int identity(1,1)
这工作很好,并添加了我需要的所有数字自动。谢谢! – djangofan 2011-10-24 20:42:32
如果您在管理工作室gui中进行更改时遇到问题,您可以更改/ Tools/Options/Designer/Table和Database Desiger下的设置,您将发现一个复选框`Prevent'保存需要重新创建表的更改`取消选中该框和您即使使用gui也能够添加标识列。 – surfmuggle 2012-11-05 19:28:12
只需使用ALTER TABLE应该工作。用适当的类型和身份标识添加列,它应该做的伎俩
看看这个MSDN文章http://msdn.microsoft.com/en-us/library/aa275462(SQL.80).aspx在ALTER TABLE语法
取决于数据库的每个数据库都有一个不同的方式来增加序列数字。我会改变表格来添加列,然后在groovy/python/etc中编写一个数据库脚本来读取数据并使用序列更新id。一旦数据被设置,我会添加一个序列到顶部数字之后开始的表格。一旦数据已经设置好,请正确设置主键。
甲骨文你可以做类似下面
alter table mytable add (myfield integer);
update mytable set myfield = rownum;
,如果你发布你所使用的SQL数据库,这将有助于。对于MySQL你可能想要auto_increment:
ALTER TABLE tableName ADD id MEDIUMINT NOT NULL AUTO_INCREMENT KEY
不知道这是否适用于追溯值虽然。如果不是,你应该只能用存储过程或简单的程序迭代你的值(只要没有其他人正在写入数据库)并设置使用LAST_INSERT_ID()
函数来生成id值。
而且Postgres的当量(第二行是强制的前提是你想要的“ID”是一个关键):
ALTER TABLE tableName ADD id SERIAL;
ALTER TABLE tableName ADD PRIMARY KEY (id);
如果你不想让你的新列是IDENTITY
类型(自动增量),或者您想要详细说明行的编号顺序,您可以添加一个类型为INT NULL
的列,然后像这样填充它。在我的示例中,新列名为MyNewColumn,表的现有主键列名为MyPrimaryKey。
UPDATE MyTable
SET MyTable.MyNewColumn = AutoTable.AutoNum
FROM
(
SELECT MyPrimaryKey,
ROW_NUMBER() OVER (ORDER BY SomeColumn, SomeOtherColumn) AS AutoNum
FROM MyTable
) AutoTable
WHERE MyTable.MyPrimaryKey = AutoTable.MyPrimaryKey
这个作品在SQL Sever的2005及更高版本,即版本支持ROW_NUMBER()
在SQL Server UNIQUEIDENTIFIER数据类型如果你想创建出的该主键试试这个
Alter table table_name
add ID UNIQUEIDENTIFIER not null unique default(newid())
列使用此
ALTER TABLE table_name
ADD CONSTRAINT PK_name PRIMARY KEY (ID);
- 1. 向另一个列表中的列表添加唯一元素
- 2. 向现有表添加额外的唯一行ID
- 3. 向mySql中的现有表添加唯一值
- 4. 向唯一表添加新行
- 5. 添加唯一约束列
- 6. 更改表添加唯一列sql ce
- 7. 添加没有唯一列的小计
- 8. 向Spark DataFrame添加一列并为其计算值
- 9. 向表差异添加唯一的ID号
- 10. 如何使用ALTER TABLE添加新列并使其唯一?
- 11. 一批到现有的号码添加在现有列
- 12. 在Wordpress帖子中添加一个唯一的帖子编号
- 13. 在现有表中添加一个新列,其值等于ID
- 14. 向数字列表添加唯一标识 - VBA
- 15. 向数组添加唯一对象
- 16. 仅向容器添加唯一文件?
- 17. 唯一对象键,但添加其他
- 18. 散列数组并向其添加值
- 19. 添加%符号并为其着色
- 20. 向列表框添加一个矩形
- 21. 向Integer列表中添加一个int
- 22. 列添加到现有的表我想一列添加到现有表,其价值依赖于其他的列存储其值取决于其他列
- 23. 唯一编号列表
- 24. 添加ID列并将其填充到Rails中的现有表?
- 25. 搜索并添加一个python列表
- 26. 加载XML并向其添加节点
- 27. 如何在sybase中添加唯一列?
- 28. 编写一个添加方法,实现一个双向链表,当我向它添加对象时排序
- 29. 仅添加唯一值
- 30. JSON添加唯一键值
这将是数据库特定的。你应该指定你正在使用的数据库。 – dvorak 2008-09-20 13:59:25
我正在SQL Server中工作。 – 2008-09-20 14:04:10
你应该编辑你的问题来提一提。 – dvorak 2008-09-20 14:07:54