我正在创建表之间的关系,这是自动递增两列id_quotation和seq_quotation所必需的。我正在引用另一个表(tb_core_process_id_quotation)中的列id_quotation,在这个表中我已经递增了它。
下面的表格(tb_core_process_customer_data)将被其他表格用来捕获公共数据和主要客户数据。为此,有必要使用这三个验证键:cpf_cnpj、id_quotation和seq_quotation,这三个验证键对此数据库中的整个表都是通用的。
tb_core_process_customer_data查询:
CREATE TABLE tb_core_process_customer_data(
cpf_cnpj VARCHAR(255) NOT NULL,
id_quotation INT NOT NULL,
seq_quotation INT NOT NULL AUTO_INCREMENT,
name VARCHAR(255),
dt_birth DATE,
cd_insurance_type INT,
PRIMARY KEY (cpf_cnpj, seq_quotation, id_quotation),
FOREIGN KEY (cd_insurance_type) REFERENCES tb_nm_insurance_type(cd_insurance_type),
FOREIGN KEY (id_quotation) REFERENCES tb_core_process_id_quotation(id_quotation)
);tb_core_process_id_quotation查询:
CREATE TABLE tb_core_process_id_quotation(
id_quotation INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY (id_quotation)
);因此,我很难将这三个键联系起来并进行验证。当我尝试创建tb_core_process_customer_data时,下面的消息向我展示了一下:
ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key
发布于 2017-01-17 02:06:32
MySQL使用auto_increment字段上的键来加快查找速度。您将auto_increment字段作为pk中的第二个字段,因此MySQL不能单独使用pk来检查自动增量的值,因此出现错误消息。
有许多方法可以解决这个问题。
seq_quotation字段上添加一个单独的键(不需要唯一或主键)。seq_quotation移到当前主键中的第一个字段。备注
如果您的意图是使用自动递增使每个组有一个递增的数字,那么
https://stackoverflow.com/questions/41682103
复制相似问题