【发布时间】:2014-03-31 14:36:05
【问题描述】:
我创建了以下两个表:
Table1:
CREATE TABLE employees
(
PersonID NUMBER(10) NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255) NOT NULL,
JobRole varchar(255) NOT NULL,
Location varchar(255) NOT NULL,
CONSTRAINT pk_employee PRIMARY KEY (personid) USING INDEX
);
Table 2:
CREATE TABLE DBAteam
(
PersonID NUMBER(10) NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255) NOT NULL,
JobRole varchar(255) NOT NULL,
Location varchar(255) NOT NULL,
CONSTRAINT pk_dbateam PRIMARY KEY (personid) USING INDEX
);
以下是我用来填充这两个表的触发器和存储过程:
触发器:
CREATE OR REPLACE TRIGGER trg_trigger_test AFTER INSERT ON employees FOR EACH ROW
BEGIN
p_procedure_test(:NEW.personid, :NEW.lastname, :NEW.firstname, :NEW.jobrole, :NEW.location);
END trg_trigger_test;
/
存储过程:
CREATE OR REPLACE PROCEDURE p_procedure_test
(
i_personid IN employees.personid%TYPE,
i_lastname IN employees.lastname%TYPE,
i_firstname IN employees.firstname%TYPE,
i_jobrole IN employees.jobrole%TYPE,
i_location IN employees.location%TYPE
) AS
--
BEGIN
--
INSERT INTO dbateam
(
personid,
lastname,
firstname,
jobrole,
location
)
VALUES
(
i_personid,
i_lastname,
i_firstname,
i_jobrole,
i_location);
--
END p_procedure_test;
/
我需要找到一种方法来创建存储过程或查询以显示两个表之间的差异
任何帮助将不胜感激,我一直在努力解决这个问题。
【问题讨论】:
-
你使用什么数据库? oracle,mysql,sql server ?
-
我会查询您的架构。我假设 DBA 也是雇员。在员工身上挂上某种标志可能是有意义的,或者让员工担任多个角色,而不是成为一个包含重复字段的全新表。
-
你想每次都用 dba 员工填充 dbateam 并且 dba 员工被插入到员工表中吗?
-
我想为所有员工创建一个表。然后为所有不同类型的员工创建单独的表。
-
在纸面上这似乎完全有道理,但我现在意识到我的想法可能有缺陷。
标签: sql database oracle stored-procedures