Php 如何使2个外键组合为唯一键且不能复制
我有一张桌子Php 如何使2个外键组合为唯一键且不能复制,php,mysql,Php,Mysql,我有一张桌子 CREATE TABLE IF NOT EXISTS `hrms_employee_leave` ( `employee_leave_id` int(11) NOT NULL, `employee_id` int(11) NOT NULL, `leave_category_id` int(11) NOT NULL, `days` int(11) NOT NULL ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1; 它
CREATE TABLE IF NOT EXISTS `hrms_employee_leave` (
`employee_leave_id` int(11) NOT NULL,
`employee_id` int(11) NOT NULL,
`leave_category_id` int(11) NOT NULL,
`days` int(11) NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;
它将显示员工有多少休假,这是此表中的数据存储
Employee_id = 25,
leave_category_id = 2,
days = 14
Employee_id = 25,
leave_category_id = 3,
days = 14
当我内部连接表时,输出如下
Employee Name = Foo,
Leave Category = Annual Leave,
days = 14
Foo has 14 days of Annual Leave.
Employee Name = Foo,
Leave Category = Medical Leave,
days = 14
Foo has 14 days of Medical Leave.
如何组合员工id和离开类别id成为一个唯一的键,不能重复,以防止用户多次插入
Employee_id = 25,
leave_category_id = 2,
days = 14
Employee_id = 25,
leave_category_id = 3,
days = 14
添加多列唯一索引有多种方法。例如,您可以在create table语句中执行此操作:
CREATE TABLE IF NOT EXISTS `hrms_employee_leave` (
`employee_leave_id` int(11) NOT NULL,
`employee_id` int(11) NOT NULL,
`leave_category_id` int(11) NOT NULL,
`days` int(11) NOT NULL,
CONSTRAINT `uniqueindex_1` UNIQUE (`employee_leave_id`, `leave_category_id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;
这样一来,emloyee\u leave\u id
和leave\u category\u id
组合就不能重复了。此外,它们都不能为NULL。如果这些列可以同时作为外键,则两者都可以
请参阅示例,其中这两列都是外键和复合唯一索引:您好,谢谢您的重播,但我想要的是员工id+离开类别id的组合,不能重复是的,这就是我写的内容和意思。注意句子开头附近的“否”一词。您好,如果我按照您写的内容创建了我的表,但另一名员工不能使用相同的休假类别id,
employee\u leave\u id是自动递增的数字
可以。请参见两名不同员工使用相同休假类别id的示例。不能相同(不能重复)的是,给定的员工休假类别id中有多行具有相同休假类别id。