假设我的数据库中有以下列:
Item:id int PRIMARY KEY,name string,foreign_id FOREIGN KEY
Item:
id int PRIMARY KEY,
name string,
foreign_id FOREIGN KEY
有没有办法不在每次插入前查询数据库,一个外键不能包含两个同名行?
xnifntxz1#
如果我理解正确,您可能需要使用唯一约束:
CREATE TABLE ( id INT PRIMARY KEY , name VARCHAR(50) --or whatever you need , foreign_id INT UNIQUE FOREIGN KEY (foreign_id) REFERENCES...);
CREATE TABLE (
id INT PRIMARY KEY
, name VARCHAR(50) --or whatever you need
, foreign_id INT UNIQUE
FOREIGN KEY (foreign_id) REFERENCES...
);
xzlaal3s2#
当然,您希望为外键列添加(唯一)索引。要添加的sql命令是
ALTER TABLE `mytable`ADD UNIQUE INDEX `mytable_idx__1` (`foreign_id`);
ALTER TABLE `mytable`
ADD UNIQUE INDEX `mytable_idx__1` (`foreign_id`);
um6iljoc3#
据我所知,使用外键(foreign\u id)引用将解决这个问题。并确保他们总是 unique key 表的类型 foreign key 另一张table。
unique key
foreign key
CREATE TABLE profile( id int NOT NULL PRIMARY KEY, name varchar(50), FOREIGN KEY (name) REFERENCES member (name) ON DELETE CASCADE ON UPDATE CASCADE) ENGINE=InnoDB ;
CREATE TABLE profile
(
id int NOT NULL PRIMARY KEY,
name varchar(50),
FOREIGN KEY (name)
REFERENCES member (name)
ON DELETE CASCADE
ON UPDATE CASCADE
) ENGINE=InnoDB ;
3条答案
按热度按时间xnifntxz1#
如果我理解正确,您可能需要使用唯一约束:
xzlaal3s2#
当然,您希望为外键列添加(唯一)索引。要添加的sql命令是
um6iljoc3#
据我所知,使用外键(foreign\u id)引用将解决这个问题。并确保他们总是
unique key
表的类型foreign key
另一张table。