如何在 table 中添加新列作为主键?
How to add new column in table as primary key?
我想知道如何在现有 table 中添加新列(设置为主键并设置默认值)?我试过了
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
我看到了几篇帖子,但它要求删除 table 中的所有现有数据,我不想这样做。有没有其他方法可以在不删除 table 中的数据的情况下将新列添加为主键?
我现在的 table:
我要创建的新 table:
谢谢
您的列中可能包含 Null 值,如果有,也请先尝试删除主键约束。
试试这个 DDL:
ALTER TABLE table_name ADD ( column_name VARCHAR (10) SET DEFAULT 'value1');
ALTER TABLE table_name ADD PRIMARY KEY(column_name);
这样做会产生错误,因为每当您在已经有 1 行或多行的 table 中添加新列时,新列的所有元组都会获得 NULL 值,这与以下规则相矛盾说 PRIMARY KEY CAN NOT CONTAIN NULL.
此外,如果您提供 DEFAULT 值,则主键中也不允许重复条目!
因此,仅在 non-empty table 中添加一个新列并同时声明其主键是行不通的。
现在AUTO_INCREMENT来拯救,通过递增添加列并将其声明为主键:
ALTER TABLE table_name ADD COLUMN new_column INT AUTO_INCREMENT PRIMARY
KEY ;
这现在工作正常...
谢谢提问。
您的列可能有空值
如果您的 table 没有主键并想添加一个新列并将其作为主键,请使用以下查询并使用自动递增,这样它将是唯一的
ALTER TABLE old_table ADD pk_column INT AUTO_INCREMENT 主键;
我想知道如何在现有 table 中添加新列(设置为主键并设置默认值)?我试过了
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
我看到了几篇帖子,但它要求删除 table 中的所有现有数据,我不想这样做。有没有其他方法可以在不删除 table 中的数据的情况下将新列添加为主键?
我现在的 table:
我要创建的新 table:
谢谢
您的列中可能包含 Null 值,如果有,也请先尝试删除主键约束。
试试这个 DDL:
ALTER TABLE table_name ADD ( column_name VARCHAR (10) SET DEFAULT 'value1');
ALTER TABLE table_name ADD PRIMARY KEY(column_name);
这样做会产生错误,因为每当您在已经有 1 行或多行的 table 中添加新列时,新列的所有元组都会获得 NULL 值,这与以下规则相矛盾说 PRIMARY KEY CAN NOT CONTAIN NULL.
此外,如果您提供 DEFAULT 值,则主键中也不允许重复条目!
因此,仅在 non-empty table 中添加一个新列并同时声明其主键是行不通的。
现在AUTO_INCREMENT来拯救,通过递增添加列并将其声明为主键:
ALTER TABLE table_name ADD COLUMN new_column INT AUTO_INCREMENT PRIMARY KEY ;
这现在工作正常...
谢谢提问。
您的列可能有空值 如果您的 table 没有主键并想添加一个新列并将其作为主键,请使用以下查询并使用自动递增,这样它将是唯一的
ALTER TABLE old_table ADD pk_column INT AUTO_INCREMENT 主键;