2017-03-01 68 views
0

我已經設置我的專欄爲int NOT NULL默認1 ...但每當我救我的記錄,它設置默認值該記錄爲0。不正確的默認值

我沒有設置在任何地方。我不知道我犯了什麼錯誤。

我調試了我的代碼,並且當我傳遞新的實體對象時,它將默認值設置爲不爲null。可能是LINQ的東西,但我不知道如何處理它。不想明確分配價值。 謝謝!

+0

你會發布到目前爲止你已經嘗試過的東西。 –

+0

ALTER TABLE [dbo]。[Emp] ADD CONSTRAINT DF_Emp_DOJ DEFAULT(GETDATE())FOR [DOJ] –

+0

請再次檢查表腳本 – Azar

回答

0

對於sql-server,可以使用SQL Server Profiler來捕獲您運行到數據庫中的所有腳本。 這可能會告訴你一些細節

0

嘗試運行此查詢,您的實際TABLECOLUMN名稱更換'myTable''myColumn'值,並看到所返回的內容:

SELECT 
    OBJECT_NAME(C.object_id) AS [Table Name] 
    ,C.Name AS [Column Name] 
    ,DC.Name AS [Constraint Name] 
    ,DC.Type_Desc AS [Constraint Type] 
    ,DC.Definition AS [Default Value] 
FROM sys.default_constraints DC 
INNER JOIN sys.Columns C 
    ON DC.parent_column_id = C.column_id 
    AND DC.parent_object_id = C.object_id 
WHERE OBJECT_NAME(DC.parent_object_id) = 'myTable' 
AND COL_NAME(DC.parent_object_id,DC.parent_column_id) = 'myColumn' 
; 

應該返回是這樣的:

[Table Name] [Column Name] [Constraint Name] [Constraint Type]  [Default Value] 
------------------------------------------------------------------------------------------- 
myTable   myColumn  DF_myTable_myColumn DEFAULT_CONSTRAINT  ('0') 

如果返回的[Default Value]確實是(1),那麼這意味着您已將約束條件設置爲正確在這裏玩別的東西。它可能是一個觸發器,或者是你忘記/不知道的其他一些自動化DML,或者是其他的東西。

我不是世界上使用TRIGGER的最大粉絲,但在這樣的情況下,它可能會很方便。我發現TRIGGER最好的用途之一就是調試這樣的小東西 - 因爲它可以讓你看到傳遞到表中的值是什麼,而不必滾動瀏覽器的數據。你可以嘗試這樣的事情(再次,與您的實際表和列名的開關出myTablemyColumn值):

CREATE TABLE Default_Check 
(
    Action_Time DATETIME NOT NULL DEFAULT GETDATE() 
    ,Inserted_Value INT 
); 

CREATE TRIGGER Checking_Default ON myTable 
AFTER INSERT, UPDATE 
AS 
BEGIN 
    INSERT INTO Default_Check (Inserted_Value) 
    SELECT I.myColumn 
    FROM Inserted I 
    ; 
END 
; 

這觸發只會列出對你的表進行更新/插入的日期/時間,以及插入的價值。建立在此之後,你可以運行一個INSERT聲明,然後檢查:

SELECT * FROM Default_Check; 

如果你看到一排,只有一個動作(插入/更新)的對陣表來完成。如果你看到兩個,你不期望發生的事情 - 你可以檢查看看。插入/更新0時,您也會看到此處。

當您完成後,只要確保你DROP觸發:

DROP TRIGGER Checking_Default; 

你要DROP表,太,一旦它變得無關緊要:

DROP TABLE Default_Check; 

如果所有這仍然沒有幫助你,讓我知道。

0

在VB中使用

物業VARIABLENAME作爲整數?=無

而且

在C#中使用

詮釋?值= 0;

如果(值== 0)
{
值= NULL;
}

0

Please check My Example: 
 

 
create table emp (ids int null, [DOJ] datetime NOT null) 
 
ALTER TABLE [dbo].[Emp] ADD CONSTRAINT DF_Emp_DOJ DEFAULT (GETDATE()) FOR [DOJ] 
 

 
1--Not working for Default Values 
 
insert into emp 
 
select '1','' 
 

 
2 ---working for Default Values 
 
insert into emp(ids) Values(13) 
 

 
select * From emp

+0

@Umara嘗試像插入到emp(ids)值(13) –

相關問題