[英]AUTO_INCREMENT in composite key
我有桌子如下
個人信息
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)
)
在創建table 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本身會創建下一個數字。
由於patentId
是AUTO_INCREMENT
,因此它應該是主鍵。
我將使用一個Person
而不是user
- 假設你有一個診所......
Patient
是一個Person
Doctor
是一個Person
Doctor
也可能成為一名Patient
。 Person
Patient
Doctor
總而言之,對於您的特定示例,兩個表都應具有UserID
作為主鍵。 在第二個表中,它也是一個外鍵。
您不必在一個表中自動增加值。 所以你必須在代碼級別通過使用last_insert_id()或類似的東西在userinfo表中手動插入userid,而不是在db-level上這樣做
如果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上測試
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.