1. ホーム
  2. sql

[解決済み] IDENTITY列が1つしかないテーブルに行を挿入する[重複]。

2023-06-15 12:26:31

質問

私は、主キーであるadminIdという1つのカラムのみを持つAdministratorテーブルを持っています。ビジネスルールのため、このようにする必要があります。

このようなテーブルに値を挿入するストアドプロシージャをどのように書くことができるか、きっぱりと理解したいのです。SQL Server と T-SQL を使用しており、SCOPE_IDENTITY() を使用しようとしましたが、テーブルが INSERT_IDENTITY を false または off にしているため、うまくいきません。

私は、新しい行を挿入できるようにするためだけに、ダミー値を挿入しないようにしたいと思います。 ありがとうございます!

どのように解決するのですか?

IDENTITYのカラムが1つでもあれば、次のようにすればよいでしょう。

INSERT MyTable DEFAULT VALUES;  --allows no column list. The default will be the IDENTITY
SELECT SCOPE_IDENTITY();

IDがない場合、設定できるのでしょうか?これが一番いい方法です。そして上のSQLを使います。

そうでない場合、新しい行を挿入したい場合

INSERT MyTable (admidid)
OUTPUT INSERTED.admidid --returns result to caller
SELECT ISNULL(MAX(admidid), 0) + 1 FROM MyTable

注意事項

  • 高負荷の場合、MAX ソリューションは重複して失敗する可能性があります。
  • SCOPE_IDENTITY は の後に の前ではなく、ファクトの後です。
  • SCOPE_IDENTITY は IDENTITY カラムでのみ動作します。IDENT_CURRENT を使用する馬鹿な行為も同様です。
  • 出力節はSCOPE_IDENTITYをMAXソリューションに置き換えます。