不要重复来自两个不同 table 的条目行
don't repeat entry row from two different table
我创建了两个数据库(php 使用 XAMPP)一个用于员工(id,姓名),另一个用于管理员(id,姓名)。
两个 table 中的 id 是主键,我需要在两个 table 之间建立关系,其中 id 不重复。例如:admin(1,a)uses id = 1 which不应在员工 table
中使用
请帮忙
这个问题的规范做法是使用单table。这使得保持 id
值不同变得非常容易。
您可以包含一个 discriminator 列来指示一行代表 "employee" 还是 "administrator"。在您的示例中,有两个可能的值。
CREATE TABLE employee
( id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT COMMENT 'pk'
, ename VARCHAR(50) NOT NULL
, admin TINYINT(1) UNSIGNED NOT NULL DEFAULT '0' COMMENT 'boolean'
)
一些示例数据,以说明:
id ename admin
--- ---------------- -------
42 Barney Rubble 0
43 Fred Flintstone 0
17 Mr. Slate 1
示例查询:
-- select "employee" rows
SELECT id, ename FROM employee WHERE admin=0
-- select "administrator" rows
SELECT id, ename FROM employee WHERE admin
如果你需要两个分开的 table,你问过
最重要的是 MySQL 中没有可用的声明性约束来强制两个 table 之间的 id
值彼此 "distinct" .
为此,您必须 "roll your own" 解决方案。而且该解决方案并非微不足道,它可能相当复杂。
有一些简单问题的解决方案,自动生成唯一的 id
值。但是要真正强制执行唯一性,没有简单的方法可以做到这一点。
如果您的目标只是强制执行约束,那么 INSERT 和 UPDATE 语句在试图违反约束时会抛出错误,您将需要编写触发器。
我创建了两个数据库(php 使用 XAMPP)一个用于员工(id,姓名),另一个用于管理员(id,姓名)。 两个 table 中的 id 是主键,我需要在两个 table 之间建立关系,其中 id 不重复。例如:admin(1,a)uses id = 1 which不应在员工 table
中使用请帮忙
这个问题的规范做法是使用单table。这使得保持 id
值不同变得非常容易。
您可以包含一个 discriminator 列来指示一行代表 "employee" 还是 "administrator"。在您的示例中,有两个可能的值。
CREATE TABLE employee
( id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT COMMENT 'pk'
, ename VARCHAR(50) NOT NULL
, admin TINYINT(1) UNSIGNED NOT NULL DEFAULT '0' COMMENT 'boolean'
)
一些示例数据,以说明:
id ename admin
--- ---------------- -------
42 Barney Rubble 0
43 Fred Flintstone 0
17 Mr. Slate 1
示例查询:
-- select "employee" rows
SELECT id, ename FROM employee WHERE admin=0
-- select "administrator" rows
SELECT id, ename FROM employee WHERE admin
如果你需要两个分开的 table,你问过
最重要的是 MySQL 中没有可用的声明性约束来强制两个 table 之间的 id
值彼此 "distinct" .
为此,您必须 "roll your own" 解决方案。而且该解决方案并非微不足道,它可能相当复杂。
有一些简单问题的解决方案,自动生成唯一的 id
值。但是要真正强制执行唯一性,没有简单的方法可以做到这一点。
如果您的目标只是强制执行约束,那么 INSERT 和 UPDATE 语句在试图违反约束时会抛出错误,您将需要编写触发器。