1. ホーム
  2. sql-server

[解決済み] なぜ select SCOPE_IDENTITY() は整数の代わりに10進数を返すのですか?

2023-01-20 06:04:33

質問

ID カラムを主キーとするテーブルがあり、それは整数です。では、なぜ SCOPE_IDENTITY() はいつもC#アプリケーションにint型ではなく10進型の値を返すのでしょうか?C#では10進値は暗黙のうちに整数に変換されないので、これは本当に困ります。つまり、私はSQL ServerとPostgresを使っているので、たくさんのものを書き直し、たくさんのヘルパーメソッドを持たなければなりません。

なぜ SCOPE_IDENTITY() は単に整数を返さないのでしょうか?主キーに 10 進数または非 ID 値を一般的に使用する人々がそこにいますか?

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

SQL Serverでは IDENTITY プロパティに割り当てることができます。 tinyint , smallint , int , bigint , decimal(p, 0) または numeric(p, 0) の列になります。したがって SCOPE_IDENTITY 関数は上記のすべてを包含できるデータ型を返さなければなりません。

前の回答が言っているように、単にそれをキャストして int にキャストして、それを返す前に、ADO.NETはあなたが期待するようにその型を検出します。