【发布时间】:2016-02-24 18:09:49
【问题描述】:
我创建了一个存储过程来插入或更新数据库中的 em 表,例如
ALTER PROCEDURE [dbo].[uspInsertorUpdateArchibusINF]
@em_TT AS em_TT READONLY
AS
BEGIN
SET NOCOUNT ON;
BEGIN TRANSACTION;
UPDATE e
SET e.dp_id = t.dp_id,
e.dv_id = t.dv_id,
e.email = t.email,
e.emergency_relation = t.emergency_relation,
e.name_first = t.name_first,
e.name_last = t.name_last,
e.option1 = t.option1,
e.status = t.status,
e.em_title = t.em_title,
e.date_hired = t.date_hired
FROM [dbo].[em] e
INNER JOIN @em_TT t ON e.em_id = t.em_id
INSERT INTO [dbo].[em](dp_id, dv_id, email, emergency_relation, name_first,name_last
, option1, status, em_id, em_title,date_hired)
SELECT t.dp_id, t.dv_id, t.email
, t.emergency_relation,t.name_first,t.name_last, t.option1, t.status
, t.em_id, t.em_title, t.date_hired
FROM @em_TT t
WHERE NOT EXISTS (SELECT 1
FROM [dbo].[em]
WHERE em_id = t.em_id)
COMMIT TRANSACTION;
END;
em 表中的 dp_id 和 dv_id 是表 dv 和 dp 的外键。所以现在我尝试在 em 表中插入一些新值,它会抛出类似的错误 INSERT 语句与 FOREIGN KEY 约束“em_dp_id”冲突。冲突发生在数据库“j20”、表“dbo.dp”中。
不,我不确定是否可以修改上述存储过程以插入是否有新的 dp_id 或 dv_id 到相应的表中。还是我必须单独创建它。非常感谢任何帮助
【问题讨论】:
标签: mysql database stored-procedures