表test中有一字段keyid int 自增長類型
MySQL:
在insert & update 的語句中
上述語句可以正常執行!
MSSQL:
上述情況就會出錯! 異常的信息大概意思是:在insert & update 語句中不能用到keyid(自動增長字段)!
[b][color=blue]第一次補充[/color]:[/b]
在MSSQL中產生上述錯誤。經我在網上一番搜掠之後! 是因爲我沒有把IDENTITY_INSERT 設為 ON .
[quote]语法
SET IDENTITY_INSERT [ database.[ owner.] ] { table } { ON | OFF }
参数
database
是指定的表所驻留的数据库名称。
owner
是表所有者的名称。
table
是含有标识列的表名。
[/quote]
不過可惜的是.我把IDENTITY_INSERT 設為 ON了,但是在insert數據時還是報同樣的錯誤!天啊!HELP ME~ME~ME!
[b][color=blue]第二次補充[/color]:[/b]
如果要把IDENTITY_INSERT 設為 ON生效! 就要在insert & update語句前執行!
在MSDN中找到:
[quote]不論何時,工作階段中只能有一份資料表將
IDENTITY_INSERT 屬性設為 ON。如果已有資料表的這個屬性設為 ON,又針對另一份資
料表發出 SET IDENTITY_INSERT ON 陳述式,SQL Server 2005 會傳回一則錯誤訊
息,指出 SET IDENTITY_INSERT 已設為 ON,且會報告設為 ON 所針對的資料表。
如果輸入的值大於資料表目前的識別值,SQL Server 會自動利用新插入的值來作為目前的識別值。
[color=red]SET IDENTITY_INSERT 的設定是在執行階段進行設定,而不是在剖析階段進行設定。[/color]
[/quote]
當我打字打到這裡的時候.我突然想起我所說的已經偏離了我一開始所要講的.不過,無關係!我的BLOG,我話事!
在MSSQL中所謂的顯式:
當keyid最大值是99時!平且沒有一條記錄keyid == 0;
那麽這兩條語句將會成功插入!其中keyid == 100 & keyid == 0
OK!我們將環境轉去MySQL:
當keyid最大值是99時!平且沒有一條記錄keyid == 0;
那麽這兩條語句將會成功插入!但是結果與MSSQL有所不同!
執行完第一條語句時:將產生一條keyid == 100的紀錄.
執行完第二條語句時:產生了一條keyid == [color=red]101[/color]的紀錄.
MySQL:
在insert & update 的語句中
insert into test(keyid)values(100);
update test set keyid = 101;上述語句可以正常執行!
MSSQL:
insert into test(keyid)values(100);
update test set keyid = 101;......上述情況就會出錯! 異常的信息大概意思是:在insert & update 語句中不能用到keyid(自動增長字段)!
Cannot insert explicit value for identity
column in table 'test' when IDENTITY_INSERT
is set to OFF.
........[b][color=blue]第一次補充[/color]:[/b]
在MSSQL中產生上述錯誤。經我在網上一番搜掠之後! 是因爲我沒有把IDENTITY_INSERT 設為 ON .
[quote]语法
SET IDENTITY_INSERT [ database.[ owner.] ] { table } { ON | OFF }
参数
database
是指定的表所驻留的数据库名称。
owner
是表所有者的名称。
table
是含有标识列的表名。
[/quote]
不過可惜的是.我把IDENTITY_INSERT 設為 ON了,但是在insert數據時還是報同樣的錯誤!天啊!HELP ME~ME~ME!
[b][color=blue]第二次補充[/color]:[/b]
如果要把IDENTITY_INSERT 設為 ON生效! 就要在insert & update語句前執行!
在MSDN中找到:
[quote]不論何時,工作階段中只能有一份資料表將
IDENTITY_INSERT 屬性設為 ON。如果已有資料表的這個屬性設為 ON,又針對另一份資
料表發出 SET IDENTITY_INSERT ON 陳述式,SQL Server 2005 會傳回一則錯誤訊
息,指出 SET IDENTITY_INSERT 已設為 ON,且會報告設為 ON 所針對的資料表。
如果輸入的值大於資料表目前的識別值,SQL Server 會自動利用新插入的值來作為目前的識別值。
[color=red]SET IDENTITY_INSERT 的設定是在執行階段進行設定,而不是在剖析階段進行設定。[/color]
[/quote]
當我打字打到這裡的時候.我突然想起我所說的已經偏離了我一開始所要講的.不過,無關係!我的BLOG,我話事!
在MSSQL中所謂的顯式:
insert into test(keyid)values(100);
insert into test(keyid)values(0);.....當keyid最大值是99時!平且沒有一條記錄keyid == 0;
那麽這兩條語句將會成功插入!其中keyid == 100 & keyid == 0
OK!我們將環境轉去MySQL:
insert into test(keyid)values(100);
insert into test(keyid)values(0);.....當keyid最大值是99時!平且沒有一條記錄keyid == 0;
那麽這兩條語句將會成功插入!但是結果與MSSQL有所不同!
執行完第一條語句時:將產生一條keyid == 100的紀錄.
執行完第二條語句時:產生了一條keyid == [color=red]101[/color]的紀錄.
本文探讨了MySQL与MSSQL中自增字段(keyid)在INSERT与UPDATE操作上的区别。在MSSQL中直接指定自增字段的值会引发错误,除非事先设置了IDENTITY_INSERT为ON。文章还讨论了即使设置正确,在某些情况下仍可能遇到的问题。
1568

被折叠的 条评论
为什么被折叠?



