SQLでオートナンバー型に変更するには?

解決


ゆいか  2004-06-06 23:37:59  No: 83854  IP: [192.*.*.*]

SQL上にデータベースとテーブルを作成し、データを入力しました。
その後で[Integer]型のフィールドをオートナンバー型に変更したのですが
うまくいきません。
SQLではテーブル作成&データ入力済み後では不可能なのでしょうか?
どなたか、わかられる方教えて頂けないでしょうか?
お願い致します。

  <現在の方法>
  Dim strCnn            As String
  Dim cnn               As ADODB.Connection
  Dim strSQL            As String

  strCnn = "Provider=SQLOLEDB;" _
         & "Data Source=" & strServerName & ";" _
         & "User ID=" & strUserName & ";" _
         & "Password=" & strPassword & ";" _
         & "Initial Catalog=てすと;" _
         & "Network Library=dbmssocn;"

  Set cnn = New ADODB.Connection
  cnn.Open strCnn

  strSQL = "ALTER TABEL てすと ALTER CULUMN TestID IDENTITY(1,1)"
  cnn.Execute(strSQL)

  cnn.Close
  Set cnn = Nothing

編集 削除
koma  2004-06-07 09:49:51  No: 83855  IP: [192.*.*.*]

どちらかといえばVBじゃなくてDBMSのほうの質問のような気がしますが。

テーブルへのデータ入力後は、オートナンバー型への変更は不可のはずです。
(SQLserverの詳しい仕様は存じ上げませんが)
ALTER TABLE … ADD 〜 で、新たにオートナンバー型のフィールドを追加してみては?

編集 削除
魔界の仮面弁士  2004-06-07 10:36:25  No: 83856  IP: [192.*.*.*]

> どちらかといえばVBじゃなくてDBMSのほうの質問のような気がしますが。
同感…。(^^;)

さて、エラーの原因についてですが、komaさんが書かれているように、
IDENTITYは ADD 時にしか指定できない事になっているようです。
(Transact-SQL リファレンスの、"ALTER TABLE"の項を参照してください)


それ以外で気になる点としては、
・ALTER TABEL ではなく、ALTER TABLE です。
・ALTER CULUMN ではなく、ALTER COLUMN です。
・正確には、Integer型→int型です。
あたりですね。

編集 削除
浜的サム  2004-06-07 12:19:20  No: 83857  IP: [192.*.*.*]

一旦データが存在するフィールドをAUTOIncrement
型にするには、そのフィールドを削除して、同じ名前の
フィールドを定義する必要がある。
JoinKeyに使用していていまさら消すとまずい場合は
別の名前のAUとIncrementフィールドを定義する必要が
ある。もっとも前のInt型もAutoIncrement型にしたい
場合は、プログラムに手を入れる必要がある。

編集 削除
ゆいか  2004-06-10 22:25:12  No: 83858  IP: [192.*.*.*]

お返事とお礼が遅くなりました。
皆様、回答ありがとうございました。
結果として解決致しました。
.Netマガジンに、
  "SET IDENTITY_INSERT [台帳] ON"
の機能が載ってました。

>koma様、魔界の仮面弁士様、浜的サム様
  お答え頂きほんとうにありがとうございました。
  それから、
  > どちらかといえばVBじゃなくてDBMSのほうの質問のような気がしますが。
  確かに言われてみればそうですね。(~_~;)
  何分、VBで作っていたものですからこちらに書込みしてしまいました。
  以後、気をつけます。
  
  ところで「DBMS」について質問できるところがあるのでしょうか?
  ここには検索して来てしまいましたので・・・。

編集 削除
Say  2004-06-10 22:33:13  No: 83859  IP: [192.*.*.*]

VBユーザ向けのDB関連掲示板なら、たとえば
VB初心者友の会
http://www2j.biglobe.ne.jp/~little-g/vbtomo.html
にデータベースQ&A掲示板があったりしますが。

編集 削除