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,它可能是这样的(不知道模型的真实结构,但它应该很容易适应您的具体情况):
结束 有两种方法:
我希望有一个更简单的方法…但我想我的命运是触发器。你能帮我写这样一个触发器吗?如果你需要有关触发器的帮助,你必须指定你正在使用的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;