我想知道如何在现有表中添加新列(设置为主键并设置默认值)?我试过了
ALTER TABLE table_name ADD ( column_name VARCHAR (10));
ALTER TABLE table_name ALTER COLUMN column_name SET DEFAULT 'value1';
ALTER TABLE table_name ADD PRIMARY KEY(column_name);
>> ERROR 1138 (22004): Invalid use of NULL value
我看到了几篇帖子,但它要求删除表中所有我不想删除的现有数据。有没有其他方法可以在不删除表中数据的情况下添加新列作为主键?
我当前的表:
我要创建的新表:
谢谢
最佳答案
这样做会产生错误,因为每当您在已经有 1 行或多行的表中添加新列时,新列将在其所有元组中获得 NULL 值,这与 PRIMARY KEY CAN NOT CONTAIN 的规则相矛盾空值。
此外,如果您提供 DEFAULT 值,则主键中也不允许重复条目!
因此,仅通过提供默认值并同时声明其主键来在非空表中添加一个新列是行不通的。
现在 AUTO_INCREMENT 来拯救,通过递增添加列并将其声明为主键:
ALTER TABLE table_name ADD COLUMN new_column INT AUTO_INCREMENT PRIMARY KEY ;
这现在工作正常......
感谢您的提问。
关于mysql - 如何在表中添加新列作为主键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56262917/