相关疑难解决方法(0)

NULL的唯一键

这个问题需要一些假设的背景.让我们考虑一个employee有列的表name,date_of_birth,title,salary使用MySQL作为RDBMS.因为如果任何一个人的姓名和出生日期与另一个人相同,那么根据定义,他们是同一个人(除非我们有两个人在1809年2月12日出生的亚伯拉罕·林肯出生的惊人巧合),我们将把独特的按键namedate_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)

mysql database null relational-model

38
推荐指数
4
解决办法
3万
查看次数

标签 统计

database ×1

mysql ×1

null ×1

relational-model ×1