我的表格如下
personalInfo
CREATE TABLE personalInfo(userid BIGINT AUTO_INCREMENT PRIMARY KEY)
patentInfo
CREATE TABLE patentInfo
(
userid BIGINT,
patentId BIGINT AUTO_INCREMENT,
FOREIGN KEY (userid) REFERENCES personalInfo(userid),
PRIMARY KEY (userid,patentId)
)
创建表patentInfo
时,我收到错误
Incorrect table definition; there can be only one auto column and it must be defined as a key.
我想要做的是为用户添加专利。因此,我尝试将patentId
用作AUTO_INCREMENT
,并将compiste主键保持为patentId
&组合。 userid
。
知道如何完成这项工作?
我的目标是,我不想在mysql查询中插入patentId
。 mysql本身将创建下一个数字。
答案 0 :(得分:1)
由于patentId
为AUTO_INCREMENT
,因此它应该是主键。
答案 1 :(得分:1)
我会使用Person
代替user
- 假设您有诊所......
Patient
是Person
Doctor
是Person
Doctor
也可能成为({a})Patient
。
Person
Patient
Doctor
总而言之,对于您的具体示例,两个表都应以UserID
作为主键。在第二个表中,它也是外键。
答案 2 :(得分:0)
您不必在一个表中自动增加值。所以你必须通过使用last_insert_id()或类似的东西,在代码级别手动插入userid表中的userid,而不是在db-level上执行此操作
答案 3 :(得分:0)
如果auto_increment列是主键的第一个子句,似乎你可以拥有一个带有一个auto_increment列的复合主键。
以下适用于我的机器
CREATE TABLE patentInfo
(
userid BIGINT,
patentId BIGINT AUTO_INCREMENT,
PRIMARY KEY (patentId, userid)
)
在哪里
PRIMARY KEY (userid, patentId)
给出了您看到的错误。
在MariaDB 10.0 YMMV上测试