SQL约束,检查是否只存在一条记录并将其值用于表

时间:2016-05-11 19:41:46

标签: mysql sql

我现在正在尝试创建两个相互交互的SQL表,并且已经搜索了很长一段时间的答案。对正确方向的一点点推动将受到高度赞赏。

就我而言,我有一张表Company,其中包含以下CREATE声明:

CREATE TABLE Company
      (CNr INTEGER NOT NULL,
       Name VARCHAR(128) NOT NULL,
       Manager VARCHAR(128) NOT NULL,
       Area VARCHAR(128) NOT NULL,
       PRIMARY KEY (FNr));

正在创建的表Employee

CREATE TABLE Employee 
      (Name VARCHAR (128) NOT NULL,
       Age INTEGER NOT NULL,
       Company INTEGER NOT NULL,
       PRIMARY KEY (Name));

现在我想为Company创建一种检查方式,如果Employee中只有一名员工,如果是这样,那么该员工将成为Company中的经理

我正在尝试SELECT CASE,但我不确定我的解决方案:

SELECT CASE 
    WHEN (1 = SELECT COUNT(*) FROM Employee WHERE Company = CNr)
    THEN Manager = (SELECT Name FROM Manager WHERE Company = CNr);
    ELSE Manager = new.Manager;
END

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

如评论中所述,您不会使用约束来更新数据。您可以使用以下代码检查employee表中是否存在1名员工,如果他员工,则将其姓名放在表Manager的{​​{1}}列中的所有行中。

Company

如果您只想更新表CASE WHEN (SELECT COUNT(1) FROM Employee LIMIT 2) = 1 THEN (UPDATE Company SET manager = (SELECT Name FROM Employee)) END 的某些行,那么请包含Company子句,条件是您要决定更新哪些行:

WHERE ...

(用条件替换......)

如果有帮助,请告诉我。