使mysql列对于每个外键都是唯一的

prdp8dxp  于 2021-06-21  发布在  Mysql
关注(0)|答案(3)|浏览(347)

假设我的数据库中有以下列:

  1. Item:
  2. id int PRIMARY KEY,
  3. name string,
  4. foreign_id FOREIGN KEY

有没有办法不在每次插入前查询数据库,一个外键不能包含两个同名行?

xnifntxz

xnifntxz1#

如果我理解正确,您可能需要使用唯一约束:

  1. CREATE TABLE (
  2. id INT PRIMARY KEY
  3. , name VARCHAR(50) --or whatever you need
  4. , foreign_id INT UNIQUE
  5. FOREIGN KEY (foreign_id) REFERENCES...
  6. );
xzlaal3s

xzlaal3s2#

当然,您希望为外键列添加(唯一)索引。要添加的sql命令是

  1. ALTER TABLE `mytable`
  2. ADD UNIQUE INDEX `mytable_idx__1` (`foreign_id`);
um6iljoc

um6iljoc3#

据我所知,使用外键(foreign\u id)引用将解决这个问题。并确保他们总是 unique key 表的类型 foreign key 另一张table。

  1. CREATE TABLE profile
  2. (
  3. id int NOT NULL PRIMARY KEY,
  4. name varchar(50),
  5. FOREIGN KEY (name)
  6. REFERENCES member (name)
  7. ON DELETE CASCADE
  8. ON UPDATE CASCADE
  9. ) ENGINE=InnoDB ;

相关问题