将两列组合为mysql中的唯一键

时间:2015-03-18 12:05:21

标签: php mysql

需要在mysql中组合两列来设置唯一键。例如

id Ticket_number Code     Name
1    5              123   a
2    5              89    b
3    2              89    a
4    8              123   c

这里我想通过组合两者来将Ticket_number和Code设置为唯一。即只有再次出现相同的组合时才应出现错误。票号和代码可以重复,但组合不应重复。这怎么可能。请帮帮我。

这是create语句:

CREATE TABLE arlog(   id int(11)NOT NULL AUTO_INCREMENT,   Ticket_Number varchar(40)NOT NULL,   Code varchar(10)NOT NULL,   Name varchar(100)NOT NULL,   PRIMARY KEY(id),   独特的钥匙Ticket_NumberTicket_Number) )ENGINE = InnoDB AUTO_INCREMENT = 1 DEFAULT CHARSET = latin1;

3 个答案:

答案 0 :(得分:3)

使用此代码创建表

CREATE TABLE ticket(
    id INT,
    ticket_number INT,
    code INT,
    PRIMARY KEY (id)
) 

CREATE UNIQUE INDEX index_name ON ticket(id, ticket_number, code);

将充当复合键。

答案 1 :(得分:2)

创建一个唯一索引:

create unique index idx_table_ticket_code on table(ticket_number, code)

答案 2 :(得分:1)

按照给出

CREATE TABLE tablename (
 id INT,   
 user_id INT,
 setting_id INT,
 NAME  VARCHAR(255)
);

CREATE UNIQUE INDEX index_name ON tablename(user_id, setting_id);

INSERT INTO tablename (NAME,user_id,setting_id) VALUES ('1',34,15)
  ON DUPLICATE KEY UPDATE NAME = '1', user_id = 34, setting_id = 15;