1. ホーム
  2. sql-server

[解決済み] MS SQL Server 2005で行のSNoを自動的に設定する方法は?

2022-02-09 18:48:36

質問内容

データベースのテーブル(ここでは顧客と呼ぶ)にいくつかの行があります。各行はSNoで番号付けされており、MS SQLServerに固有のIDプロパティによって自動的にインクリメントされます。しかし、特定の行を削除すると、その行番号は空白のままになりますが、テーブルが自動的に修正されるようにしたいのです。

例を挙げると

以下の行を持つサンプル顧客テーブルがあります。

SNo CustomerName Age

1   Dani         28
2   Alex         29
3   Duran        21
4   Mark         24

そして、3行目を削除すると、テーブルは次のようになります。

SNo CustomerName Age

1   Dani         28
2   Alex         29
4   Mark         24

でも、表はこんな感じにしたい。

SNo CustomerName Age

1   Dani         28
2   Alex         29
3   Mark         24

どうすれば実現できるのか?

よろしくお願いします

期待しています。

解決方法は?

ご指摘の通り、この方法ではSNoとの関係が壊れてしまいますが、例えばプレゼンテーション層で序数が必要な場合、[1..n]の行番号で引き抜くことが可能です。

SELECT ROW_NUMBER() OVER(ORDER BY SNo ASC), SNo, CustomerName, Age FROM Customer

明らかにこの場合、行番号は単なる増加する数字であり、他のものとの関連では意味がありません。