我尝试按如下方式创建父表和子表:
CREATE SEQUENCE ProcessLogId;
CREATE TABLE ProcessLog
(
ProcessLogId NUMBER DEFAULT ProcessLogId.NEXTVAL NOT NULL ,
ProcessName VARCHAR(20),
ProcessStatus VARCHAR(20),
StartTime DATE ,
EndTime DATE,
CreatedOn DATE DEFAULT (SYSDATE) NOT NULL,
CreatedBy VARCHAR(45) DEFAULT USER NOT NULL,
CONSTRAINT PK_ProcessLog PRIMARY KEY(ProcessLogId)
);
CREATE SEQUENCE SourceLogId;
CREATE TABLE SourceLog
(
SourceLogId NUMBER DEFAULT SourceLogId.NEXTVAL NOT NULL ,
ProcessLogId NUMBER NULL,
SourceName VARCHAR(512) NOT NULL,
TotalRowCount INT,
Status VARCHAR(20),
StartTime DATE,
EndTime DATE
CONSTRAINT PK_SourceLogId PRIMARY KEY(SourceLogId),
CONSTRAINT CK_SourceLog_Status CHECK (Status='S' OR Status='F' OR Status='I'),
CONSTRAINT FK_SourceLog_ProcessLog FOREIGN KEY (ProcessLogId) REFERENCES ProcessLog(ProcessLogId)
);
我创建了两个程序来插入记录:
CREATE OR REPLACE PROCEDURE GetProcessLogId
(
ProcessName IN VARCHAR,ProcessLogId OUT INT)
AS
BEGIN
INSERT INTO PROCESSLOG
(ProcessName
,ProcessStatus
,StartTime)
VALUES(ProcessName
,'I'
,SYSDATE)
RETURNING ProcessLogId INTO ProcessLogId;
END;
CREATE OR REPLACE PROCEDURE GetSourceLogId
(ProcessLogId IN NUMBER,SourceName IN VARCHAR,SourceLogId OUT NUMBER)
AS
BEGIN
INSERT INTO SourceLog
(ProcessLogId
,SourceName
,Status
,StartTime)
VALUES (ProcessLogId
,SourceName
,'I'
,SYSDATE)
RETURNING SourceLogId INTO SourceLogId;
END;
我已经创建了SSIS包来html" target="_blank">调用这两个过程。父ProcessLog
记录插入成功。但是对于子表过程,我得到以下错误:
“[Execute SQL Task]错误:执行查询”BEGIN GetSourceLogId(?,?输出);终止失败,出现以下错误:“违反了ORA-02291:完整性约束(PATIENTMDR.FK_SOURCELOG_PROCESSLOG)-未找到父项ORA-06512:位于“PATIENTMDR.GETSOURCELOGID”,第6行ORA-06512:在第1行。可能的失败原因:查询问题、“ResultSet”属性设置不正确、参数设置不正确或连接建立不正确
我的SSIS包包含两个ExecuteSQL任务。在第一个任务中,我调用了GetProcessLogId
过程:
BEGIN
GetProcessLogId(?,?output);
end;
在第二个任务中,我调用了GetSourceLogId
过程:
BEGIN
GetSourceLogId(?,?,?output);
end;
我有四个变量,var_processlogid
,var_processname
,var_sourcelogid
和var_sourcename
。
我已经给前两个赋值,var\u processname='Process1'
和var\u sourcename='Source1'
;我在参数映射部分指定了适当的变量。
我已经检查了所有的约束条件。我没能解决这个问题。我做错了什么?
您必须将错误的ProcessLogId
传递给GetSourceLogId
(顺便说一句,它的名称很奇怪,此过程主要插入一行,并应相应地命名)。由于您没有将调用发布到GetSourceLogId
,我无法判断您哪里出错了。
尝试删除FK\u SourceLog\u ProcessLog
constant。那么你的插入应该成功了。然后检查SourceLog
中的内容。毫无疑问,您将在那里找到ProcessLogId
s,它们在ProcessLog
中没有对应关系。那么事情就应该清楚了。
所以这里是我的数据库: 插入表格: 批次表不断出现的错误是:ORA-02290:违反了检查约束(EJAY.batches\u DATE\u CHK) 学生表出现的错误是:ORA-02291:违反完整性约束-未找到父键 我感到困惑的是,它只显示在表格中的一些行。教职员工和课程都很好,只有这两个。如果答案很明显,我道歉,我是初学者。请帮帮忙
当我做插入它给我这个错误: ORA-02291:违反完整性约束(H00300581.FK_类)-未找到父密钥 对于注册表中的所有插入,都会发生此错误。我需要帮忙,请帮我修一下。 是否来自表中的外键?可能是因为我什么都试过了,但都没用。 创建表 创建序列 培训师数据 类数据 成员数据 注册资料
当我创建表时,我将作为主键,将作为外键从同一个表中创建,作为dep表中的外键,当我想插入显示的值时,现在我感到困惑。 该表包含以下内容: 我第一次使用以下命令行: 然后我尝试不使用,如下所示:
我在向vod_film表中插入值时遇到问题。各表如下: 当我运行以下代码时: 我有这个错误返回: ORA-02291:完整性约束(OPS$P2417335.VOD_FILM_CLASS_FK)被侵犯-未找到父密钥 我不确定为什么会返回此错误,因为外键引用了vod_分类中的现有字段。在插入数据时,所有表格都已按我认为正确的顺序添加。 任何关于我为什么会收到这个错误的帮助都将不胜感激,或者如果我需要提
我试图为和创建会话,这两个表都与相同的外键关联到登录表-但是当我为创建种子时,我得到了错误,在我的另一个问题在这个链接中,我没有以最好的方式解释,但得到了一些关于使用(党-角色-关系模型)和这段代码下面他更多的想法有关已解决的问题链接 创建表和主键 创建表和主键 创建表以及主键和外键 使用表为管理员创建会话的过程: 使用表为用户创建会话的过程: 创建管理会话时,我收到一个错误 我做错了什么?
因此,我正在用Oracle编写一些代码,并建立了以下表格: 下载表连接用户和产品表,其中包含外键user_id和product_id。我正试图通过以下代码将数据插入下载表: Oracle然后给我以下错误: 错误报告-ORA-02291:完整性约束(BC29369.DOWNLOADS_FK2)违反-未找到父密钥。 我很清楚为什么我不应该把它作为我的首要关系。有人知道如何解决这个问题吗?提前谢谢你!