1
Q
插入表中無值
A
回答
1
假設你有那些9個NOT NULL
字段創建默認值,你有三種選擇:
不要使用
DEFAULT VALUES
任何字段設置值。不要通過在INSERT列表或VALUES列表中指定這些字段來設置
NOT NULL
字段的值。不要設置爲
NOT NULL
字段的值,假設他們是在INSERT列列表中指定,使用DEFAULT
關鍵字,而不是值。
實施例示出每一個選項,以及明確地插入NULL
到具有默認一個可爲空場的效果:
DECLARE @Test TABLE
(
ID INT NOT NULL IDENTITY(1, 1) PRIMARY KEY,
NotNullField DATETIME NOT NULL DEFAULT (GETDATE()),
NullableFieldWithDefault DATETIME NULL DEFAULT (GETDATE()),
NullableFieldWithNoDefault DATETIME NULL
);
-- No values specified for any fields
INSERT INTO @Test DEFAULT VALUES;
-- Values specified only for NULLable field with no default
INSERT INTO @Test (NullableFieldWithNoDefault) VALUES ('2112-12-21');
-- DEFAULT keyword used for fields with a default
INSERT INTO @Test (NotNullField, NullableFieldWithDefault, NullableFieldWithNoDefault)
VALUES (DEFAULT, DEFAULT, '1999-03-15');
-- NULLs specified for NULLable fields
INSERT INTO @Test (NullableFieldWithDefault, NullableFieldWithNoDefault)
VALUES (NULL, NULL);
SELECT * FROM @Test;
結果:
ID NotNullField NullableFieldWithDefault NullableFieldWithNoDefault
-- ----------------------- ------------------------ --------------------------
1 2015-01-11 16:22:31.317 2015-01-11 16:22:31.317 NULL
2 2015-01-11 16:22:31.320 2015-01-11 16:22:31.320 2112-12-21 00:00:00.000
3 2015-01-11 16:22:31.320 2015-01-11 16:22:31.320 1999-03-15 00:00:00.000
4 2015-01-11 16:22:31.320 NULL NULL
相關問題
- 1. 無法將值插入表
- 2. 無法在表列中插入值
- 3. 無法將值插入到MYSQL表
- 4. 無法將值插入到sqlite表
- 5. 插入無值到火鳥表
- 6. CLOB值太大,無法插入DB2表
- 7. mySQL - 無法將值插入表
- 8. 無法將NULL值插入列「 STAFFID」,表
- 9. 在Mysql表中插入值
- 10. 不在表中插入值
- 11. 插入表中很多值
- 12. C++ ADO.NET無法插入NULL值插入
- 13. 的NHibernate +無法插入NULL值插入
- 14. 無法插入表
- 15. 插入值列表
- 16. 將值插入表
- 17. 插入值jos_core_aro表
- 18. 將值插入到表1中時觸發器將值插入到表1中
- 19. 插入隨機值插入表JS
- 20. 插入值,一個基於表中插入另一個表
- 21. 無法插入值到SQLITE
- 22. 無法插入外鍵值
- 23. 無法插入Null值
- 24. 無法在Ruby中的表中插入值
- 25. 無法在Python中使用MySQL插入值到表中
- 26. 無法向impex中的classAttributeAssignment插入值
- 27. 無法將值插入到tableview中 - JavaFx
- 28. 無法在db中插入值
- 29. 「無法插入NULL值插入列」 與非空值
- 30. 無法在數據庫表中插入值
可以定義表格具有這些列的默認值。否則,你必須指定一些東西。 –
@GordonLinoff請注意,如果有一個合理的,你應該只定義一個默認值。如果你真的需要指定所有這些字段,那麼你絕對應該*不*具有默認值。在這種情況下,你應該咧嘴一笑,並指定它們。根據我的經驗,合理的違約很難得到。 – jpmc26
@ jpmc26我傾向於同意並回避他們。我發現回覆它們往往會導致人們忘記那些字段在那裏,或者在以可能使缺省無效(即不再合理)的方式更新系統時考慮它們的初始值。所以我傾向於將它們主要用於設置CreatedOn/ModifiedOn審計字段。但是,有些情況下,他們是有幫助的,人們應該知道如何與他們互動(因此我的答案)。例如,使用默認值創建測試表可以輕鬆生成行,而只需處理需要不同值的字段。 –