• ベストアンサー

IDENTITY列

confunkshunの回答

  • ベストアンサー
回答No.1

AutoNumber型と発想は似ておりますが、 identityは型ではなく、カラムの属性となります。 テーブルに渡って番号が増加するデータを持つ場合に、IDENTITY属性を指定し、SQL Serverに自動的にセットさせることができます。 IDENTITYを使用する場合はデータ型を「int」かつ、「NULLを許容」にする必要があります。 IDENTITY属性は、シードと呼ばれる初期値とインクリメントと呼ばれる増分を指定し、数値を初期値からレコード追加の際に増分を加算された値で自動セットしてくれるので便利ですが、登録された値を取得するには@@IDENTITYをSELECTしないと取得できなかったり、TableAdapterのUpdateメソッドでは対象テーブルのIDENTITY属性を持つフィールドを含めたDataTableを使用するとうまくいかなかったりなったりと制約もありますので使用の際には検討が必要です。 ご注意ください。

jmine
質問者

お礼

confunkshun様 分かりやすい回答ありがとうございます。 よく理解できました。

関連するQ&A

  • Identity列に-1が入ってしまう

    いつも参考にさせていただいています。 今回質問させていただいたのは、Identity属性の列に「-1」が入ってしまう現象についてです。 なぜこのようなことになるのか、何かお気づきのかたいらしたらご意見いただけないでしょうか。 [現象の流れ] ※SAMPLEという名前のテーブルを例に使います※ SAMPLEテーブルにレコードを10程度追加しました。 追加はMS SQL Server Management StudioのクエリエディタウィンドウからINSERT文を発行して行いました。 追加後、テーブルの中身が下記のようになっていました。 Sampleテーブル A列 B列 1  1つ目の要素 2  2つ目の要素 -1  3つ目の要素 -1  4つ目の要素 -1  5つ目の要素  ・  ・  ・ ※A列に-1が入っている状態です。 [テーブル構成] CREATE TABLE [dbo].[SAMPLE]( [A] [int] IDENTITY(1,1) NOT NULL, [B] [nvarchar](20) NOT NULL ) [疑問点] なぜIdentity属性の列に-1が入るようなことが起こったのでしょうか? 原因が全く分かりません。 今後このようなことが起こっては怖いので、 原因や退避策があれば何かご意見いただけないでしょうか。 ちなみに1度データを削除し、 DBCC CHECKIDENT(テーブル名,RESEED, 0) で番号をリセットしてデータを入れ直した後の再現はまだありません。 [環境] Windows XP MS SQL Server2008 Standard MS SQL Server Management Studioよりテーブルの中身を見ています。 どうかよろしくお願いいたします。

  • アイデンティティについて

    アイデンティティが拡散していると言われました。 アイデンティティについて調べても中々理解することができません。 アイデンティティが拡散していると言うことは自我が自分の中で形成されていないと考えていいんですか? また、アイデンティティが拡散するのには何か原因が存在するのでしょうか? アイデンティティについて詳しく教えてください。

  • アイデンティティについて

    先日『アイデンティティ』という言葉の意味と使い方について質問しました。 たくさんの回答をいただいて答えを読んで、わたしなりに理解したいと考え アイデンティティという言葉にも、すこしは近くなったように思っていますが、 わたしの努力の足りなさもあって まだひとつの答えにはなっていません。 今回の質問は 「アイデンティティという言葉」についてどう思っているか アイデンティティという言葉を使うのか?使わないのか 使う時は、どんな時にどんなことを表すために使うのか  という質問です。 良く考えると前回の質問と同じことかもしれませんが… アイデンティティについて をどう書いているのかを読みたい という気持ちなのです。どうぞよろしくお願いいたします。

  • IDENTITY列を持つテーブルへBCPでインポート

    こんにちは。 -- IDENTITYを解除 SET IDENTITY_INSERT TBLA ON --BCPコマンドを文字列として生成する set @cmdstr = '' set @cmdstr = 'bcp TBLA in c:\TBLA.csv -c -t , -r \n -U xx -P xx' --生成したコマンド文字列を実行するxp_cmdshellを動的SQLで実行する execute master.dbo.xp_cmdshell @cmdstr -- IDENTITYを再設定 SET IDENTITY_INSERT TBLA OFF ってな感じでやってみたのですが、 実行後TBLAの中を見てみると、IDENTITY列の値は テキストデータの中の値ではなく、 テーブルがIDENTITYを勝手に割り振っちゃいます。 どなたか、このようなことやった方いらっしゃいませんか?

  • アイデンティティ

    抽象的な質問で申し訳ないのですが、アイデンティティについてです。 『何が正しいのか、何をやりたいのか、何をすべきなのか…。』自分自身が全く理解できないって感じです。 これは、アイデンティティの拡散に陥っているのでしょうか? また、陥っているのならばどのようにして確立していけばいいのですか?

  • viewにidentity列の追加

    viewにidentity列を追加したいのですが、SQL文が分からなくて困っています。 追加する方法をご存知の方がいましたらよろしくお願いします。 作りたいviewは以下のようなviewです。 ・テーブルA ID  NAME   ADDRESS 1   山田    東京 2   鈴木    埼玉 3   田中    千葉 4   佐藤    埼玉 5   藤田    東京 6   石田    神奈川 7   松田    千葉 ・作成したいview ID  ADDRESS  出身人数 1   神奈川      1 2    埼玉      2 3    千葉      2  4    東京      2 ↑このID列をidentity列にしたいと考えています。 使用しているDBはH2です。よろしくお願いします。

  • identity属性の列に自動採番(SQL)

    ID、name、seibetuという列を持つ、membersというテーブルがあり、INSERT文を実行してテーブルに値を入れたいと考えています。 IDがIs IDENTITYの値がTRUEになっている列で、NOT NULLです。 以下のクエリを実行したところ、IDにNULLが入るといったエラーが起きます。 SET IDENTITY_INSERT members ON INSERT INTO members (seibetu, name, ID) VALUES ('男', 'すずき', @@IDENTITY) 何か問題があるのでしょうか? お分かりの方いらっしゃいましたらよろしくお願いします。

  • アイデンティティーについて

    アイデンティティーの正しい保ち方について教えてください (1) 他人のアイデンティティーを損傷し、自分のアイデンティティーを保つ。競合するしないに関わらず、他者を排除するのではなく、損傷することで自己を保てば 最強のアイデンティティーを保持できる (2) 他者と競合しつつ存在することでアイデンティティーを保つ。他者と協力し、依存しあうことで、だが各自のアイデンティティーは分離して存在する (3) 他者のアイデンティティーを奪い取り自己のアイデンティティーとする。奪い取った後、同じ物がふたつ存在することになる。競合とは違う。 その後、互いの了解済みのあとに似たようなものとして両者とも存在し続けるか 奪った罪であるいは用済みであるという罪で排除・損傷しあい、残った奴が本物である (4) アイデンティティーを保つためには他者と違う事をしならない。他者と違う事を行う事でアイデンティティーとして分離した自己を発見する (5)あまり気にしなくてもアイデンティティは存在する。自然に存在している自分を意識することで存在を確認する。それは生存しているという行為の中で変化しながら存在しつづけるものだからきにしない (6) 競合するアイデンティティを排除することで自己の存在を唯一無二のものとし、それを保ち続ける 他に方法があったら教えてください あるいはアイデンティティー自体についてご意見お聞かせ下さい。そんなものいらないでしょとか ・アイデンティティーの損傷は人権侵害である? ・精神異常はアイデンティティーを意識しているから発生するのではないか? ・アイデンティティーが破壊され尽くした場合とは度のような場合なのか。

  • アイデンティティ

    アイデンティティについて()内の用語を用いて説明しなさい(エリクソン 心理的危機 マーシャ アイデンティティ達成 アイデンティティ拡散 早期完了)という問題なのですがよろしくお願いします。

  • アイデンティティを理解する?

    > 「筆者のXXはイスラム教徒の女性で、父親がイラク人で母がキューバ人である。彼女は、出会う多くの人が、彼女のアイデンティティを理解するのが困難であることを発見しました。」 「発見しました」という日本語から、この和文は英文の訳であることがわかりますが、「アイデンティティを理解する」とは、普通の日本語に直すとどうなるのでしょう?