簡體   English   中英

復合鍵中的AUTO_INCREMENT

[英]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主鍵作為patentIduserid組合。

知道如何完成這項工作?

更新1:

我的目標是,我不想在mysql查詢中插入patentId mysql本身會創建下一個數字。

由於patentIdAUTO_INCREMENT ,因此它應該是主鍵。

我將使用一個Person而不是user - 假設你有一個診所......

  • Patient是一個Person
  • Doctor是一個Person
  • Doctor也可能成為一名Patient

在此輸入圖像描述

  • 請所有普通個人信息Person
  • 在只有特定患者柱Patient
  • 只有醫生專門的Doctor
  • 子類型是包含的,因此鑒別器具有{B = both}
  • 請注意主鍵如何傳播到子類型表中。

總而言之,對於您的特定示例,兩個表都應具有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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM