这个问题需要一些假设的背景.让我们考虑一个employee有列的表name,date_of_birth,title,salary使用MySQL作为RDBMS.因为如果任何一个人的姓名和出生日期与另一个人相同,那么根据定义,他们是同一个人(除非我们有两个人在1809年2月12日出生的亚伯拉罕·林肯出生的惊人巧合),我们将把独特的按键name和date_of_birth,意思是"不存储同一个人两次." 现在考虑这些数据:
id name date_of_birth title salary
1 John Smith 1960-10-02 President 500,000
2 Jane Doe 1982-05-05 Accountant 80,000
3 Jim Johnson NULL Office Manager 40,000
4 Tim Smith 1899-04-11 Janitor 95,000
Run Code Online (Sandbox Code Playgroud)
如果我现在尝试运行以下语句,它应该会失败:
INSERT INTO employee (name, date_of_birth, title, salary)
VALUES ('Tim Smith', '1899-04-11', 'Janitor', '95,000')
Run Code Online (Sandbox Code Playgroud)
如果我尝试这个,它会成功:
INSERT INTO employee (name, title, salary)
VALUES ('Jim Johnson', 'Office Manager', '40,000')
Run Code Online (Sandbox Code Playgroud)
现在我的数据将如下所示:
id name date_of_birth title salary
1 …Run Code Online (Sandbox Code Playgroud)