Sql server 2005 如何在SQLServer2005中为另一个表中的列设置默认值
在SQL Server 2005中,是否可以通过查询或其他方式为来自另一个表的列设置默认值?是 可以在默认约束中使用标量UDFSql server 2005 如何在SQLServer2005中为另一个表中的列设置默认值,sql-server-2005,Sql Server 2005,在SQL Server 2005中,是否可以通过查询或其他方式为来自另一个表的列设置默认值?是 可以在默认约束中使用标量UDF 然而,对于多行插入,这将是RBAR(“逐行痛苦的行”),触发器可能更有效。我同意Martin的两个观点。因此,如果有人向表中大量导入数据,我使用触发器来避免RBAR的潜在性能损失。在下面的代码中,如果没有为MyColumn提供值,并且我们有一个填充的默认值,我们希望MyTable.MyColumn设置为DefaultSource.DefaultMyColumn。这假设有
然而,对于多行插入,这将是RBAR(“逐行痛苦的行”),触发器可能更有效。我同意Martin的两个观点。因此,如果有人向表中大量导入数据,我使用触发器来避免RBAR的潜在性能损失。在下面的代码中,如果没有为MyColumn提供值,并且我们有一个填充的默认值,我们希望MyTable.MyColumn设置为DefaultSource.DefaultMyColumn。这假设有一个MyTable.DefaultId(最好带有外键),因此我们可以从DefaultSource中的正确行获取默认值
CREATE TRIGGER [dbo].[TR_MyTable_AI_Default]
ON [dbo].[MyTable]
AFTER INSERT
AS
SET NOCOUNT ON;
UPDATE m
SET [MyColumn] = ds.[DefaultMyColumn]
FROM inserted i
JOIN [dbo].[MyTable] m ON i.[PrimaryKey] = m.[PrimaryKey]
JOIN [dbo].[DefaultSource] ds ON i.[DefaultId] = ds.[DefaultId]
WHERE a.[MyColumn] IS NULL
AND df.[DefaultMyColumn] IS NOT NULL;
不要尝试直接更新插入的特殊表,而是更新触发器的基表。您能再解释一下您要做什么吗?