请问怎么更新有外键的两个表?
表tb_A (nIndex,szNumber,...)
表tb_B (nIndex,szNumber,...)
其中只有szNumber是外键关联的,但都不是两者的主键哈!主键是nIndex,自增长的。
希望完成这样的功能,同时删除或插入一条信息到两个表中。
insert into tb_A(szNumber) values('03895678')
insert into tb_B(szNumber) values('03895678')
单独执行不可以,提示有约束冲突,怎么能合并成一条语句呢?
希望不要用存储过程,因为我是要在C++里面调用的......
[解决办法]
#1.报什么错?是因为你没往主表添加主键记录吧:03895678
#2.2个INSERT不可能写成一个SQL,只能放到一个事务里,作为一个整体。
BEGIN TRAN
insert into tb_A(szNumber) values('03895678')
insert into tb_B(szNumber) values('03895678')
COMMIT TRAN
#3.没自动修复功能。自己写SQL查询处理。
INSERT INTO tb1
(
field1,field2
)
SELECT field1,field2 FROM tb2 b
WHERE not EXISTS
(
SELECT 1
FROM tb2 a
WHERE a.szNumber = b.szNumber
)
INSERT INTO tb2
(
field1,field2
)
SELECT field1,field2 FROM tb1 a
WHERE not EXISTS
(
SELECT 1
FROM tb2 b
WHERE a.szNumber = b.szNumber
)
begin tran
alter table tab_A nocheck constraint fk;
insert into tb_A(szNumber) values('03895678')
insert into tb_B(szNumber) values('03895678')
alter table tab_B check constraint fk
commit tran