如何在条件是ID必须唯一的数据库中使用INSERT INTO



标题可能有点乱,但我会解释的。

我有一个名为Shelf的表:

CREATE TABLE Shelf (
ID int(11) NOT NULL,
UserID int NOT NULL NOT NULL,
MovieID int NOT NULL,
Nome varchar(255) NOT NULL,
Image varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

正如你所看到的,有一个名为MovieID的字段,它的值正在从API增加,基本上每次我使用这个查询"INSERT INTO Shelf VALUES (null,?,?,?,?)",如果我试图添加相同的电影两次,它会这样做,我不希望它。

简单地说,我想确保在SQL查询中有一个验证:如果MovieID(用于特定的电影)已经存储在我的数据库中,我不希望再次添加它。

提前感谢!

所以错误是明确的,我只需要添加一个唯一的值到MovieID,现在使它看起来像这样:

CREATE TABLE Shelf (
ID int(11) NOT NULL,
UserID int NOT NULL NOT NULL,
MovieID int NOT NULL,
Nome varchar(255) NOT NULL,
Image varchar(255) NOT NULL,
UNIQUE (MovieID)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

Q:如何在数据库中使用INSERT INTO,其中一个条件是ID必须是唯一的

A:对列应用UNIQUE, NOT NULL和PRIMARY KEY约束:

CREATE TABLE Shelf (
ID int(11) UNIQUE NOT NULL PRIMARY KEY,
UserID int NOT NULL,
MovieID int NOT NULL,
Nome varchar(255) NOT NULL,
Image varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4

https://www.w3schools.com/sql/sql_constraints.asp

约束用于限制可以进入表的数据类型。这确保了表中数据的准确性和可靠性。如果约束和数据操作之间有任何冲突,操作将被终止。

约束可以是列级或表级。列级约束适用于列,表级约束适用于整个表。

SQL中常用的约束如下:

  • NOT NULL -确保列不能有NULL值
  • UNIQUE -确保列中的所有值都不同
  • 主键- NOT NULL和UNIQUE的组合。唯一标识表中的每一行
  • 外键-防止破坏表间链接的操作
  • CHECK -确保列中的值满足特定条件
  • DEFAULT -如果没有指定值,则为列设置默认值
  • CREATE INDEX -用于非常快速地从数据库中创建和检索数据

相关内容

  • 没有找到相关文章

最新更新