Sql-Server
預設約束問題
我有一個表
TempTable
,其中一列具有預設約束ALTER TABLE [dbo].[TempTable] ADD CONSTRAINT [DF_TempTable_Version] DEFAULT ((1)) FOR [Version]
Version
定義為decimal (18,1)
大多數情況下,值 1.00 被插入到列中,但在某些情況下,它插入了一個空值。
我們如何確定約束是否失敗或者是否有其他問題導致了這種情況?
我們如何確定約束是否失敗或者是否有其他問題導致了這種情況?
最可能的原因是客戶端只是插入了一個空值,或者將列更新為空值,而預設約束都不會阻止這兩者。
如果您不想要空值,只需將 Version 列聲明為 NOT NULL,或添加檢查約束。
如果您在
ALTER TABLE
並發插入時發出命令,這可能是可能的,除非您設置一個 highISOLATION LEVEL
。發出命令*後,每個新插入都將提供正確的預設值。*如果在初始值之後空值保留在列中ALTER TABLE
,您可以簡單地通過更新來更改它們,例如UPDATE tempTable SET Version = 1 WHERE Version IS NULL