簡體   English   中英

Java 和 mySQL DB 中的自動增量 ID 字段?

[英]Auto Increment ID field both in Java and mySQL DB?

如果 java object 有一個自動增量 ID 字段,數據庫表字段也應該是自動增量的嗎?

例如

public class Company {
    private static int countID = 0;
    private int companyID;
    private String name;
    private String email;
    private String password;
    private List<Coupon> couponsList;

    public Company(int companyID, String name, String email, String password, List<Coupon> couponsList) {
        this.companyID = companyID+=1;
        this.name = name;
        this.email = email;
        this.password = password;
        this.couponsList = couponsList;
    }

可以看到 companyID 字段是自動生成的。

我在我的 SQL 服務器中創建了這個表

CREATE TABLE `companies` (
  `ID` int NOT NULL AUTO_INCREMENT,
  `NAME` varchar(200) DEFAULT NULL,
  `EMAIL` varchar(200) DEFAULT NULL,
  `PASSWORD` varchar(200) DEFAULT NULL,
  PRIMARY KEY (`ID`)

我應該如何將 Java 字段(commpanID)連接到 sql 字段(ID)?

不,它們是不同的東西。 MySQL 中的自動增量列不保證無間隙。 出現差距可能有多種原因。 最常見的是:

  • 並發交易。
  • 刪除。

聽起來您在 Java 中有一個唯一標識符,它要么是冗余的,要么是數據項。 如果是后者,則將其添加為附加列。

不過,更有可能的是,您可能想要重新考慮您的設計,因此給定記錄只有一個自動遞增的值。 我建議在數據庫中使用它,因為無論插入到數據庫中的方式如何,它都適用。

在數據庫中創建唯一的 id 字段不是強制性的。 您可以改為更改表格-->

CREATE TABLE companies (
  'COMPANYID' int NOT NULL,
  `NAME` varchar(200) DEFAULT NULL,
  `EMAIL` varchar(200) DEFAULT NULL,
  `PASSWORD` varchar(200) DEFAULT NULL,
  PRIMARY KEY (`ID`)

由於您自動增加相同的值兩次,因此會產生一些問題。 您的 ID 列將是這樣的-->

Id|
---
2 |
---
4 |
--
6 |
--
8 |

它會將值增加兩次

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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