我有 2 个表,其中一个与另一个有外键关系
CREATE TABLE foo (
id INT NOT NULL PRIMARY KEY IDENTITY,
value VARCHAR(50) DEFAULT NULL,
);
CREATE TABLE bar (
id INT NOT NULL PRIMARY KEY IDENTITY,
foo_key INT NOT NULL
value VARCHAR(50) DEFAULT NULL,
);
我正在使用参数化的 ADO.NET ExecuteReader 来插入新行。我的泡菜是,如果我想在同一个事务中的不同表中插入 2 行,即在提交之前,我不能在 bar 中插入行,因为我还不知道 foo.id 的值。你会怎么做呢?即我如何确保 bar.foo_key 获得正确的值?尝试选择它什么都没有,因为我猜它实际上还没有。我是否应该使用存储过程来尝试动态生成密钥,或者可能有一个可以使用的内部变量。或者有没有办法让插入返回新的ID?我是否需要外键声明,尽管我不确定这是否有用,因为我仍然不知道要使用什么 id?
我想一次性完成的原因是由于错误处理,我希望能够在发生错误时回滚所有内容。