ASF*_*est 5 sql sql-server sql-server-2008
我有点像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');
Run Code Online (Sandbox Code Playgroud)
但更好的选择是创建从产品表到组默认表的外键,这样在插入产品表之前默认表中必须存在一行,如下所示:
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)
)
Run Code Online (Sandbox Code Playgroud)
这将创建一个可靠的过程,并确保即使有人(默默地)禁用/删除触发器,您也不会遇到数据完整性问题。
| 归档时间: |
|
| 查看次数: |
71 次 |
| 最近记录: |