在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,这会导致语法错误。
Linq没有创建或修改表的功能。但是,您可以使用Linq数据上下文的底层连接来执行任何SQL语句:
DataContext.ExecuteCommand(…)
并使用它来运行alter table
语句。但是,这不会更新该表的Linq模型。
如果您计划在运行时执行此操作,您可能需要重新考虑您的数据模型并创建第三个表(例如:STable2Extended
),包含STable
和STable2
的外键,并结合该列的适用值。
然后,您可以将STable2Extended
添加到数据模型中,并在需要STable2
上的扩展属性时轻松地查询它,而无需动态修改表。