Answers:
这将取决于数据库,但是对于SQL Server,可以通过以下方式实现:
alter table Example
add NewColumn int identity(1,1)
Prevent saving changes that require table re-creation
取消选中该复选框的复选框,即使使用桂
如果您发布正在使用的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);
仅使用ALTER TABLE应该可以。添加具有正确类型和IDENTITY标志的列,它应该可以解决问题
查阅有关ALTER TABLE语法的MSDN文章http://msdn.microsoft.com/en-us/library/aa275462(SQL.80).aspx
如果您不希望新列的类型为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()