Sql 使父表中的行自动下放到子表中

Sql 使父表中的行自动下放到子表中,sql,database,parent,categories,Sql,Database,Parent,Categories,我有三张桌子。一个表EMPLOYEE是一个父表,它包含公司中的所有员工,然后我有子表EMP\u ID作为EMPLOYEE表中的PK和FK以及其他特定信息。考虑到EMPLOYEE表具有携带员工类型的EMP_TYPE,是否可以通过在EMPLOYEE中输入记录,记录应自动识别其类型并将其自身复制到相关表中?您可以使用,它检查EMP_类型,然后在相应的子表中插入数据。确保在将数据插入父表时触发这些触发器 或者你在寻找一个数据库 对于MySQL,它可能是这样的(不知道模型的真实结构,但它应该很容易适应您的

我有三张桌子。一个表
EMPLOYEE
是一个父表,它包含公司中的所有员工,然后我有子表
EMP\u ID
作为
EMPLOYEE
表中的PK和FK以及其他特定信息。考虑到
EMPLOYEE
表具有携带员工类型的
EMP_TYPE
,是否可以通过在
EMPLOYEE
中输入记录,记录应自动识别其类型并将其自身复制到相关表中?

您可以使用,它检查
EMP_类型
,然后在相应的子表中插入数据。确保在将数据插入父表时触发这些触发器

或者你在寻找一个数据库

对于MySQL,它可能是这样的(不知道模型的真实结构,但它应该很容易适应您的具体情况):


结束

有两种方法:

  • 使用on insert数据库触发器
  • 从前端或业务层进行(我假设您有)

  • 我希望有一个更简单的方法…但我想我的命运是触发器。你能帮我写这样一个触发器吗?如果你需要有关触发器的帮助,你必须指定你正在使用的dbms(oracle、MySQL等)嗯。。。我可能没有正确地理解这个问题,但如果必须将值复制到子表中,听起来您的结构中有一定的冗余。
    CREATE TRIGGER testref AFTER INSERT ON Employee
      FOR EACH ROW BEGIN
        IF NEW.EMP_TYPE = 'PROGRAMMER' THEN
          INSERT INTO Programmer (id, type, name, salary, start_date) values (NEW.EMP_ID, NEW.EMP_TYPE, NEW.NAME, NEW.SALARY, NEW.START_DATE);
        ELSE
          INSERT INTO Intern (id, type, name, salary) values (NEW.EMP_ID, NEW.EMP_TYPE, NEW.NAME, NEW.SALARY);
        END IF;