在SQL中通过Linq或触发器向表中添加列

本文关键字:添加 触发器 Linq SQL | 更新日期: 2023-09-27 18:06:15

问题是,我有两张表X &当记录被添加到表X时,列应该并行地添加到表Y。

http://prntscr.com/3owqfe <——提供一个清晰的思路。

我尝试用触发器,但似乎触发器不允许创建表或ALTER表。无论如何,当我使用Linq,我试图通过Linq实现这一点。有什么建议吗?

编辑:对于记录,下面的触发器工作,但有一个例外。

create trigger AddItemToCommon ON [SEP].[dbo].[ItemMaster]
FOR INSERT 
AS BEGIN 
declare @PAYID varchar(max) 
select @PAYID = payCode from INSERTED 
ALTER TABLE [SEP].[dbo].[CommonPayrollItems] 
ADD sampleCol varchar(max)
END 

无论如何它将只运行一次,因为不能有超过一个相同名称的列。但是,如果我可以从ItemMaster表中检索行值,那么仍然可以使用触发器。我试图用@PAYID替换sampleCol,这会导致语法错误。

在SQL中通过Linq或触发器向表中添加列

Linq没有创建或修改表的功能。但是,您可以使用Linq数据上下文的底层连接来执行任何SQL语句:

DataContext.ExecuteCommand(…)

并使用它来运行alter table语句。但是,这不会更新该表的Linq模型。

如果您计划在运行时执行此操作,您可能需要重新考虑您的数据模型并创建第三个表(例如:STable2Extended),包含STableSTable2的外键,并结合该列的适用值。
然后,您可以将STable2Extended添加到数据模型中,并在需要STable2上的扩展属性时轻松地查询它,而无需动态修改表。