我有 2 个相关的表,都有主键的标识列,我正在使用 vb 表单向其中插入数据,我的问题是我无法让子表获取父表的主键并使用它作为我数据库中的外键。尽管没有进行外键约束,但数据插入得很好。我想知道触发器是否会这样做,如果是的话如何。我所有的数据插入都是在 vb 中完成的。
用户不会插入任何键。所有这些都是自动生成的标识列。如果触发器是我的出路,请举例说明。
如果有另一种方法我可以在 VB 本身中做到这一点,那么请提出建议,一个例子将不胜感激
提前致谢
我有 2 个相关的表,都有主键的标识列,我正在使用 vb 表单向其中插入数据,我的问题是我无法让子表获取父表的主键并使用它作为我数据库中的外键。尽管没有进行外键约束,但数据插入得很好。我想知道触发器是否会这样做,如果是的话如何。我所有的数据插入都是在 vb 中完成的。
用户不会插入任何键。所有这些都是自动生成的标识列。如果触发器是我的出路,请举例说明。
如果有另一种方法我可以在 VB 本身中做到这一点,那么请提出建议,一个例子将不胜感激
提前致谢
我想到了两种方法(假设是 SQL Server):
我会检查您的数据库设计:“我的问题是我无法让子表获取父表的主键” 在子表上,您可以设置标识列,但不能设置为外键。请创建一个数据类型为 int 的新列作为外键。
create table parent (id int identity(1,1) not null, data varchar(100)...)
create table child (id int identity(1,1) not null, parent_id int not null, data varchar(100)...)
要检索存储在数据库中的信息,请使用如下查询:
select parent.id, parent.data, child.data
from parent, child
where parent.id = child.parent_id
要将数据插入到两个表中,您必须使用两个步骤:
insert parent(data) values('This is a test for parent-record')
insert child(parent_id, data) values(@@IDENTITY, 'This is testdata for the child record')
小心@@IDENTITY 值,因为如果在父表后面的插入处触发触发器,您可能不会得到最后一个父表标识值,这取决于触发器所做的工作。