Jak*_*son 10 mysql uniqueidentifier insert unique-constraint
看看下面的sqlfiddle:http ://sqlfiddle.com/#!2/dacb5/1
CREATE TABLE contacts
(
id int auto_increment primary key,
name varchar(20),
network_id int,
network_contact_id int
);
INSERT INTO contacts
(name, network_id, network_contact_id)
VALUES
('John', 4, 10),
('Alex', 4, 11),
('Bob', 4, 12),
('Jeff', 4, 45),
('Bill', 7, 11),
('Walter', 7, 45),
('Jessie', 7, 360) ;
Run Code Online (Sandbox Code Playgroud)
我有一个基本的联系人表。该network_id和network_contact_id字段包含链接到其他表的ID号码。
我希望能够运行INSERT IGNORE查询,此表,但我想用的组合network_id,并network_contact_id作为唯一键来匹配。
因此,举例来说,如果我试图插入一个接触的是有network_id = 4和network_contact_id = 12中,INSERT IGNORE查询将看到该条目已经存在,而忽略被抛出任何错误。
所以基本上,network_id不是唯一的。network_contact_id不是唯一的。但两者的结合是独一无二的。我该如何设置?我是否必须有一个其他字段作为其他两个字段的串联值?或者有没有办法为此表设置密钥,以便它可以满足我的需要?
你试过了吗
CREATE TABLE contacts (
id int auto_increment primary key,
name varchar(20),
network_id int,
network_contact_id int,
UNIQUE KEY (`network_id`, `network_contact_id`)
);
Run Code Online (Sandbox Code Playgroud)
通过UNIQUE KEY对两列的组合添加约束来更改表的定义:
CREATE TABLE contacts
(
id int auto_increment primary key,
name varchar(20),
network_id int,
network_contact_id int,
CONSTRAINT network_id_contact_id_UNIQUE
UNIQUE KEY (network_id, network_contact_id)
);
Run Code Online (Sandbox Code Playgroud)
您还应该检查 Bill Karwin 关于INSERT IGNORE,REPLACE和INSERT ... ON DUPLICATE KEY UPDATE
| 归档时间: |
|
| 查看次数: |
18890 次 |
| 最近记录: |