我想在SqlServer中創建一個表,在插入時添加一個自動遞增的主鍵。這應該是一個類似於MySql auto_increment功能的自動增加的id。 (以下)SqlServer使用MySql創建表,如auto_increment主鍵
create table foo
(
user_id int not null auto_increment,
name varchar(50)
)
有沒有辦法做到這一點與創建插入觸發器?
我想在SqlServer中創建一個表,在插入時添加一個自動遞增的主鍵。這應該是一個類似於MySql auto_increment功能的自動增加的id。 (以下)SqlServer使用MySql創建表,如auto_increment主鍵
create table foo
(
user_id int not null auto_increment,
name varchar(50)
)
有沒有辦法做到這一點與創建插入觸發器?
像這樣
create table foo
(
user_id int not null identity,
name varchar(50)
)
只需將該字段設置爲identity field即可。
申報領域是身份
正如其他人所說,剛剛設置的身份選項。
如上所述,使用IDENTITY字段。
CREATE TABLE foo
(
user_id int IDENTITY(1,1) NOT NULL,
name varchar(50)
)
OP請求一個自動遞增的主鍵。 IDENTITY關鍵字本身不會使列成爲主鍵。
CREATE TABLE user
(
TheKey int IDENTITY(1,1) PRIMARY KEY,
Name varchar(50)
)
完全正確,爲什麼另一個人打勾正確答案? – 2015-08-25 02:03:23
正如其他人所說的:將IDENTITY屬性添加到列中,並將其設置爲主鍵。
有,但是,MSSQL的身份和MySQL的AUTO_INCREMENT之間的差異:
他們已經回答了您的問題,但我想爲使用標識列的新用戶添加一點建議。有時您必須返回剛剛插入的身份的值,以便您可以插入到相關的表中。許多消息來源會告訴你使用@@ identity來獲得這個值。如果你想保持數據的完整性,在任何情況下你都不應該使用@@身份。如果將其中一個添加到另一個表中,它將給出在觸發器中創建的標識。由於您無法保證@@身份的價值永遠是正確的,因此最好不要使用@@身份。使用scope_identity()來取代這個值。我知道這有點偏離主題,但重要的是你瞭解如何使用SQL Server的身份。相信我,你不想糾正給他們提供錯誤身份價值的相關記錄問題。這種情況在數月之前可能悄然出錯,幾個月後幾乎不可能修復數據。
這不是問題的答案。它完全忽略了自動增量,主鍵問題。爲什麼它打勾? – 2015-08-25 02:04:05