SQL Server 2005中可以通過查詢或其他表爲來自另一個表的列設置默認值嗎?如何在SQL Server 2005中爲另一個表中的列設置默認值
3
A
回答
1
是的。
您可以在默認約束中使用標量UDF。
對於多行插入,這將是RBAR(「通過Agonizing Row排」),但觸發器可能更有效。
0
我同意馬丁的觀點。因此,我使用觸發器來避免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;
不要嘗試直接更新插入的特殊表,而是更新觸發器的基表。
相關問題
- 1. 如何在SQL Server中爲所有表列設置默認值?
- 2. 問題與一列(SQL Server 2005中)設置默認值
- 3. 如何寫SQL設置改變在SQL Server 2005中的列的默認值?
- 4. 如何在SQL Server中使用alter設置列的默認值?
- 5. 如何在SQL Server中將函數設置爲默認值?
- 6. 簡單的SQL,爲表中的多個列設置默認值
- 7. SQLAlchemy將一列的默認值設置爲另一列的默認值
- 8. 如何在SQL Server 2005中從另一個SQL Server 2005中調用SQL腳本
- 9. 如何在sql server 2005中默認添加列
- 10. 如何在SQL Server 2008中設置默認值?
- 11. 如何在SQL Server中設置自定義默認值?
- 12. 如何在SQL Server 2005中設置數據庫的默認模式?
- 13. SQL Server 2005/2008中有什麼方法將列重置爲默認值?
- 14. 實體框架 - 默認值不在sql server表中設置
- 15. 在MySQL中爲char列設置一個空的默認值?
- 16. 改變表'默認'不設置默認值 - SQL Server
- 17. 如何將默認值設置爲C#中的下拉列表?
- 18. 在INSERT語句中將一列的默認值設置爲另一列
- 19. SQL - 將變量設置爲另一個表中的列的值
- 20. SQL Server如何設置默認值時,該列是空
- 21. Hibernate,SQL Server:我如何使用默認值作爲另一列的值
- 22. SQL Server 2005使用列創建表默認值範圍
- 23. 在遷移期間根據另一個表中的列設置默認值
- 24. 從Sql Server 2005表中刪除默認值
- 25. SQL Server列的默認值
- 26. 如何使用sql server將默認值設置爲getdate()
- 27. SQL Server - 如何設置(nolock)提示爲默認值?
- 28. 如何從工作表中的另一個下拉列表中設置默認下拉列表值?
- 29. 在下拉列表中設置第一個默認值MVC
- 30. 使用sql server 2005更新另一個表的多列2005
你能解釋一下你想做什麼嗎? –