我想在现有的遗留数据库中添加一个列,并编写一个过程,通过该过程我可以为每个记录分配不同的值.像添加列并为其自动生成数据之类的东西.
就像,如果我添加一个名为"ID"(数字)的新列,我想为每个记录初始化一个唯一值.所以,我的ID列将有1到1000的记录.我该怎么做?
这取决于数据库,但对于SQL Server,这可以通过以下方式实现:
alter table Example add NewColumn int identity(1,1)
如果您发布了正在使用的SQL数据库,这将有所帮助.对于MySQL,您可能需要auto_increment:
ALTER TABLE tableName ADD id MEDIUMINT NOT NULL AUTO_INCREMENT KEY
不确定这是否会追溯应用值.如果不是,您应该只能使用存储过程或简单程序迭代您的值(只要没有其他人正在写入数据库)并设置使用该LAST_INSERT_ID()
函数来生成id值.
对于oracle你可以做类似下面的事情
alter table mytable add (myfield integer); update mytable set myfield = rownum;
和Postgres等价(仅当你想要"id"作为键时,第二行才是强制性的):
ALTER TABLE tableName ADD id SERIAL; ALTER TABLE tableName ADD PRIMARY KEY (id);