挿入時に、自動インクリメントされた主キーを追加する SqlServer にテーブルを作成したいと考えています。これは、MySql の auto_increment 機能と同様の自動インクリメント ID である必要があります。(下)
create table foo
(
user_id int not null auto_increment,
name varchar(50)
)
挿入トリガーを作成せずにこれを行う方法はありますか?
挿入時に、自動インクリメントされた主キーを追加する SqlServer にテーブルを作成したいと考えています。これは、MySql の auto_increment 機能と同様の自動インクリメント ID である必要があります。(下)
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)
)
OPは自動インクリメントされた主キーを要求しました。IDENTITYキーワード自体は、列を主キーにしません。
CREATE TABLE user
(
TheKey int IDENTITY(1,1) PRIMARY KEY,
Name varchar(50)
)
彼らはあなたの質問に答えましたが、ID 列を初めて使用する人にアドバイスを 1 つ追加したいと思います。関連テーブルに挿入できるように、挿入した ID の値を返す必要がある場合があります。多くのソースでは、@@identity を使用してこの値を取得するように指示されています。データの整合性を維持したい場合は、いかなる状況でも @@identity を使用しないでください。それらの1つが別のテーブルに挿入するために追加された場合、トリガーで作成されたIDを提供します。@@identity の値が常に正しいとは限らないため、@@identity を使用しないことをお勧めします。代わりに、scope_identity() を使用してこの値を取得してください。これが少し話題から外れていることは承知していますが、SQL Server で ID を使用する方法を理解するために重要です。そして、私を信頼してください。関連するレコードに誤った ID 値が与えられるという問題を修正したくありませんでした。これは、発見されるまでの数か月間、静かに問題が発生する可能性があり、その後データを修正することはほとんど不可能です.
他の人が述べたように: IDENTITY 属性を列に追加し、それを主キーにします。
ただし、MSSQL の IDENTITY と MySQL の AUTO_INCREMENT には違いがあります。
フィールドをID フィールドとして設定するだけです。
フィールドが ID であることを宣言する
上記のアドバイスに従って、IDENTITY フィールドを使用してください。
CREATE TABLE foo
(
user_id int IDENTITY(1,1) NOT NULL,
name varchar(50)
)
他の人が言ったように、Identity オプションを設定するだけです。