在mySql中为现有表添加唯一值

时间:2012-07-23 08:34:00

标签: mysql sql database

美好的一天

我从其他一些表格列NEW_TABLE创建了一个表格OLD_TABLE

我添加了一个类型为double

的新列ID

我想用唯一值填充ID列的值,然后将其设为NEW_TABLE键。

有没有办法在MySQL中使用查询或set命令执行此操作?

我试过这样的事情:

Insert into NEW_TABLE
(select  generateId() , col1, col2 
 from ORIGINAL_TABLE)

4 个答案:

答案 0 :(得分:2)

通常在定义时将字段设置为自动增量字段。之后,您可以使用:

ALTER TABLE NEW_TABLE MODIFY ID int(10) unsigned NOT NULL auto_increment;

然后插入新记录并自动获取指定的ID,只需省略插入字段。

答案 1 :(得分:1)

试试这个:

Insert into NEW_TABLE
(select   @row := @row + 1 as generateId, col1, col2 
 from ORIGINAL_TABLE, (SELECT @row := 0)row)

答案 2 :(得分:1)

你应该使用autoincrement和一个整数字段(你有什么理由要在那里使用双键吗?):

CREATE TABLE NEW_TABLE (
     id INT NOT NULL AUTO_INCREMENT,
     col1 CHAR(30) NOT NULL,
     col2 CHAR(30) NOT NULL,
     PRIMARY KEY (id)
) 

答案 3 :(得分:1)

为什么选择DOUBLE而不是整数数据类型?

ALTER TABLE NEW_TABLE
  MODIFY ID INT UNSIGNED NOT NULL AUTO_INCREMENT ;

ALTER TABLE NEW_TABLE
  ADD CONSTRAINT new_table_pk
    PRIMARY KEY (ID) ;

然后:

INSERT INTO NEW_TABLE 
  (col1, col2)
SELECT col1, col2 
FROM ORIGINAL_TABLE ;