gpt4 book ai didi

sql - MSSQL - 有没有一种方法可以在将条目添加到另一个表时自动将条目添加到一个表?

转载 作者:行者123 更新时间:2023-12-03 00:21:53 24 4
gpt4 key购买 nike

我是一名 SQL 新手,所以请耐心等待我。我的项目如下:

在 Windows Server 2008 R2 上使用 MSSQL。

有一个现有的数据库表 - 让我们称之为 PRODUCTS - 其中包含数千行数据,这是 X 公司销售的每种产品的产品信息。我感兴趣的三列是 ITEMGROUPID、ITEMID 和 ITEMNAME。 ITEMID 是该表的主键,并且是唯一的产品代码。 ITEMGROUPID 指示每个项目属于哪个产品类别,而 ITEMNAME 是不言自明的。我只对一类产品感兴趣,因此通过使用 ITEMGROUPID 我可以确定我的表将有多少行(当前为 260)。

我现在正在创建一个表,其中包含用于制作每种产品的一些参数 - 我们将其称为“LINEPARAMETERS”。例如,当我们制作Widget A时,我们需要Conveyor B以速度C运行。我打算在我的表中创建一个外键,指向另一个表中的ITEMID。因此,我的新表中的每一行都将引用现有产品数据库中的特定产品。

我的问题是,如果开发了符合我的条件(ITEMGROUPID = 'VALUE')的新产品,并使用 ITEMID 输入到现有表中,是否有任何方法可以让我的表自动生成新行所有其他列中的 ITEMID 和默认值?

最佳答案

您可以创建一个在插入product时触发的触发器,并将一行插入lineparameters,如下所示:

create trigger line_parameter_inserter
on products
after insert
as
insert into lineparameters (productId, col1, col2)
values (inserted.id, 'foo', 'bar');

但更好的选择是从产品表到组默认表创建一个外键,这样在插入产品表之前,默认表中必须存在一行,如下所示:

create table lineparameters (
id int,
col1 int,
...,
primary key (id)
)

create table products (
id int,
lineparametersId int not null,
...
primary key (id),
foreign key (lineparametersId) references lineparameters(id)
)

这将创建一个可靠的流程,并确保即使有人(默默地)禁用/删除触发器,您也不会遇到数据完整性问题。

关于sql - MSSQL - 有没有一种方法可以在将条目添加到另一个表时自动将条目添加到一个表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36686534/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com