sql資料庫字段設定成not null的話,欄位不設定預設值

時間 2021-05-02 04:01:27

1樓:墨汁諾

是的,必須有預設值。

因為在sql server中null跟''是完全不一樣的,null表示未知,沒有型別可言,而''是有型別的,表示乙個空的字串。所以有not null約束的列是可以插入''的。

有時候做判斷的時候可能某個列既有null值又有''值,這時候就經常用 where isnull(列名,'')=''進行判斷。在oracle中,''是等同於null值進行處理的,這時候有not null約束的列就不能插入''了。

2樓:桓笑容

如果是not null的話,那你就必須插入乙個值,你不插入值的話,就會呼叫預設值。

如果這兩個都沒有的話,就會報錯了

所以,改下你的insert

insert into zc_manager(user,pass,level) values('admin','123456',-1);

3樓:饅頭和小籠包

sql資料庫字段設定成not null的話,欄位不設定預設值是不是就不能插入了?

是的,必須有預設值。貌似數字之類的它本身就有預設值0吧。

4樓:玩泥小可愛

你可以把資料庫的字段not null去掉,然後再執行~這樣執行的時候,沒有插入資料的字段就是null

5樓:豆芽爾

not null 你都設定成不能為空了。 你怎麼插入。 再有。

別人是不是設定了default 『』 了 你也沒看到。 如果他設定了not null 並沒有設定default的話 那麼他也不能插入

6樓:匿名使用者

level必須有值 ,如不給值,就得設定預設值

資料庫字段設定了預設值,插入資料時,該字段值為空,會覆蓋了那個預設值嗎?

7樓:匿名使用者

假如這個欄位是字元型的,你插入的時候,是插""(也就是插入乙個值,這個值是空),那就會把這個這段變為空。如果你是想留空,使用預設值。insert語句中就不要新增這個字段,跳過。

8樓:我是哈哈哈

會。資料庫中欄位設定的預設值和插入的結果不一致,怎麼辦?

解決方案1、insert的sql語句貼出來;

解決方案2、先看看你的新增**是不是有問題,怎麼寫的;

解決方案3、

我做插入不是直接用sql插的,而是運用entityframework**如下:

using(testentitiescontext=newtestentities())

以上**中我沒有給person.isstudent賦值解決方案5、person.isstudent不賦值就是預設為0;

解決方案7、

資料庫指令碼:setquoted_identifierongocreatetable[dbo].[persons]([id][int]identity(1,1)notnull,[firstname][nvarchar](50)null,[lastname][nvarchar](50)null,[address][nvarchar](50)null,[city][nvarchar](50)null,[isstudent][bit]notnull,constraint[pk_persons]primarykeyclustered([id]asc)with(pad_index=off,statistics_norecompute=off,ignore_dup_key=off,allow_row_locks=on,allow_page_locks=on)on[primary])on[primary]goaltertable[dbo].

[persons]addconstraint[persons_isstudent]default((1))for[isstudent]go預設值是1。

9樓:匿名使用者

當然會覆蓋 預設值 因為實際上 你已經給這個字段賦值了 null 和 兩個引號 不同概念

10樓:匿名使用者

你可以在插入的時候判斷,如果為空則不操作嘛!

11樓:匿名使用者

會。。。不管你插入什麼。只要你插入東西了,那麼就會覆蓋掉預設的值

12樓:匿名使用者

mysql 5.5版本如果你指定某個欄位為null, 就不會覆蓋預設值

mysql 5.6版本如果你指定某個欄位為null, 就會覆蓋預設值

求oracle修改資料庫欄位長度sql

2個辦法 1.使用備份表 a.create table test as select from a b.drop table a c.create table a 將ddd欄位改為char 20 d.insert into a select from test e.drop table test2....

sql資料庫使用者驗證語句,SQL資料庫使用者驗證語句

sql語句 select from tablename where userid userid and userpwd userpass 要不寫在儲存過程裡 set ansi nulls on set quoted identifier on goalter procedure dbo loginp...

SQL資料庫高手請進,SQL資料庫高手請進

使用學號分組,統計通過和不通過的數量即可 不用管什麼成績了 比如某學號有7門課程,通過3門 不通過4門,那麼就可以知道通過率了 select a,case b when 通過 then 1 else 0 as 通過科目數 count a as 總科目數 case b when 通過 then 1 e...