我想知道如何在现有表中添加新列(设置为主键并设置默认值)吗?我尝试过
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
我看到了几个帖子,但是它需要删除表中所有我不想删除的数据。还有其他方法可以将新列添加为主键而不删除表中的数据吗?
我当前的表格:
我要创建的新表:
谢谢
答案 0 :(得分:1)
这样做会产生错误,因为每当您在已经有1个或更多行的表中添加新列时,新列的所有元组都将获得NULL值,这与“ PRIMARY KEY NOT CONTAIN”的规则相矛盾空。
此外,如果您提供DEFAULT值,那么主键中也不允许重复输入!
因此,仅通过在非空表中添加默认值并同时声明其主键,就无法正常工作。
现在是AUTO_INCREMENT来进行救援,通过递增来添加列并将其声明为主键:
ALTER TABLE table_name添加列new_column INT AUTO_INCREMENT PRIMARY 密钥;
现在可以正常使用了...
感谢您的提问。
答案 1 :(得分:0)
您的列中可能有Null值,并且如果有的话,也尝试首先删除主键约束。
尝试此DDL:
ALTER TABLE table_name ADD ( column_name VARCHAR (10) SET DEFAULT 'value1');
ALTER TABLE table_name ADD PRIMARY KEY(column_name);
答案 2 :(得分:0)
您的列可能具有空值 如果您的表没有主键,并且想添加一个新列并将其用作主键,请使用以下查询并使用自动递增,使其唯一。
ALTER TABLE old_table ADD pk_column INT AUTO_INCREMENT PRIMARY KEY;