Mysql 列的组合如表';s主键
是否可以将列的组合作为表的主键?Mysql 列的组合如表';s主键,mysql,sql,Mysql,Sql,是否可以将列的组合作为表的主键? 例如,我有: ID_1 | ID_2 | ID_3 | ID_4 |值 ----- ------ ------ ------ ------ 11A 1 2 1 B 211A 我希望ID_1、ID_2、ID_3和ID_4的值组合为主键。 谢谢这是可能的,但应该避免。主键应该是一列 CREATE TABLE `test`.`new_table` ( `id_1` INT NOT NULL, `id_2` INT NOT NULL, `id
例如,我有:
ID_1 | ID_2 | ID_3 | ID_4 |值
----- ------ ------ ------ ------
11A
1 2 1 B
211A
我希望ID_1、ID_2、ID_3和ID_4的值组合为主键。
谢谢这是可能的,但应该避免。主键应该是一列
CREATE TABLE `test`.`new_table` (
`id_1` INT NOT NULL,
`id_2` INT NOT NULL,
`id_3` INT NOT NULL,
`id_4` INT NOT NULL,
`value` VARCHAR(45) NULL,
PRIMARY KEY (`id_1`, `id_2`, `id_3`, `id_4`));
-第一个解决方案:
CREATE TABLE IF NOT EXISTS tableName (
id_1 INT NOT NULL,
id_2 INT NOT NULL,
id_3 INT NOT NULL,
id_4 INT NOT NULL,
value VARCHAR(10) NULL,
CONSTRAINT pk PRIMARY KEY (id_1, id_2, id_3, id_4)
);
-第二种解决方案:
使用关联表。是。定义主键时只需包括所有列,例如
CREATE TABLE T(ID_1 INT….主键(ID_1,ID_2,ID_3,ID_4))代码>仅供参考,它们被称为复合主键复合主键之间有什么区别?或者复合主键用于SQL,复合主键用于MySQL?没有区别,它们是同义词。为什么要避免?我左右为难,要么选择正确的CREATETABLE语法,要么选择它前面的废话,这会让代码变得更复杂。例如,自动递增PK.re避免,这实际上取决于用例和数据。出于什么原因必须避免?增加PK是什么意思?从OP的代码中可以明显看出,他并没有使用合成键列。另一个表B有链接到A的FK。B的FK看起来如何?您的数据库,您的查询将看起来很复杂。