有一个已经存在的表,我想通过直接添加一个主键来修改表,但系统显示Error 1068 multiple primary key defined.多个主键在哪里?我试图删除表并重新创建+alter,它工作了。我只是想知道为什么我不能单独运行它们?
下面是我的代码:
CREATE TABLE MY_DB.EMPLOYEE_INFORMATION (
EMP_ID VARCHAR(75) NOT NULL ,
EMP_NAME VARCHAR(75) NOT NULL ,
EMP_NUMBER VARCHAR(75) NOT NULL ,
EMP_SEX VARCHAR(75) NOT NULL ,
EMP_BIRTH TIMESTAMP NOT NULL ,
EMP_TEL VARCHAR(75) NOT NULL ,
EMP_WECHAT VARCHAR(75) NOT NULL ,
EMP_EMAIL VARCHAR(75) NOT NULL ,
EMP_SCHOOL VARCHAR(75) NOT NULL ,
EMP_GRADE VARCHAR(75) NOT NULL ,
EMP_MAJOR VARCHAR(75) NOT NULL ,
UPDAT_DATE TIMESTAMP NOT NULL );
ALTER TABLE MY_DB.EMPLOYEE_INFORMATION
ADD CONSTRAINT PK_EMPLOYEE_INFORMATION PRIMARY KEY (EMP_NUMBER)
字符串
错误代码:
错误代码:1068。定义了多个主键
的数据
2条答案
按热度按时间pjngdqdw1#
您尝试添加主键两次。
不知何故,你已经在某个地方给
EMPLOYEE_TIME_STATUS
表添加了一个主键。我们不知道是怎么做到的。另外,你在上面给我们展示的CREATE TABLE
语句是针对一个表EMPLOYEE_INFORMATION
的,它对EMPLOYEE_TIME_STATUS
表没有影响。raogr8fs2#
如果是8.0版本,MySQL支持为任何没有显式主键的InnoDB表生成不可见主键,当sql_generate_invisible_primary_keyserver系统变量设置为ON时,MySQL服务器会自动为任何这样的表添加一个生成的不可见主键(GIPK):
MySQL> SELECT @@sql_generate_invisible_primary_key;
并应查询:
mysql> SHOW COLUMNS FROM EMPLOYEE_TIME_STATUS;
以确定是否存在另一个PK。