- ベストアンサー
DBにの主キーで空いている番号を見つける方法
こんにちわ。 DBに、顧客コードというユニークな番号が設定されています。ここでもし、新規作成をする場合、Insert文を発行するのですが、主キーとしてInsertする番号を知ることができません。 DBからどうやってこの情報を得ればよいのでしょうか?自動付番してくれるものなのでしょうか?
- Visual Basic
- 回答数1
- ありがとう数1
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
前もってセレクトします。 SELECT MAX(PRIMARY_KEY)+1 FROM... でもいいですし、 SELECT COUNT(*) FROM DB WHERE PRIMARY_KEY = ??? でもいいのです。 また、オラクルなんかにはユニークな値を自動生成するシステム変数が定義されてたりもしますが、前もって知りたい場合には、やっぱセレクトして自分で作るしかないでしょう。
関連するQ&A
- テーブル作成クエリで主キーを設定
サブフォーム作成のため主キーを設定したいのですが、クエリでグループ化した顧客コードをテーブルとするクエリで主キーを顧客コードに設定したいのですが、クエリ実行で主キー設定方法を教えてください。
- ベストアンサー
- その他(データベース)
- Access 主キーの変更について
調査データの集計、蓄積用のDBを制作しております。 制作しているDBは主キーに県コードが含まれています。 そのため、調査データの住所に変更があるとコードを変えなければなりません。 AccessでのDBはほぼ完成しており、今からコードの形態を変更することは避けたいです。(もともと古い独自のDBのデータを流用しています。) 現在、主キーに県コードが含まれていますが、それとは別に県コードフィールドを設けています。 ※コードの形態 (先頭の二桁又は一桁が県コード、コードは4桁又は5桁) 例 主キー 北海道 1001 東京 13199 沖縄 47001 新規のデータを入力する際に主キーを入力しているのですが VBAの知識がないので県コードは個別に入力しています。 住所が変わり県が変更になった場合主キーを変更する必要が あるのですが一対多でリレーションシップをいくつもしてあり サブフォームなども使用してます。 主のフォームで主キーを変更した場合、関連付けられたレコードの主キーも変更されるようにしたいのですが可能でしょうか?
- 締切済み
- オフィス系ソフト
- シーケンスを使わずに主キーを発行したい
お世話になります。 今まで主キーの発行はシーケンスを使っていましたが、 シーケンスだと飛び番が発生するので、それ以外の方法を探しています。 データ追加時に(select max(主キー) + 1)で発行した所、複数人数で使用するDBの為 稀にタイミングによっては同じ番号を拾ってきてしまい、「主キーが重複しています」のエラーが出てしまいます。 主キーを安全に発行するのに、みなさん、どのような方法でされているのでしょうか? googleで検索をしてみましたが、意外と見つからないです。 どなたかご教示いただけると助かります。
- ベストアンサー
- PostgreSQL
- 主キーの変更
次のようなテーブルが存在します。レコードはあくまで参考の値です。主キーについては必ず一意の値になるようにしています。 代理店sample1がIDを紛失し、再発行を依頼された場合や,その下の顧客店やこきゃくがIDを紛失し、再発行をする場合に既存のデータをそのまま保持したまま主キーだけを変更して関連された他のテーブルに一斉に反映させるにはどうすればよいでしょうか? ここには記載していませんが顧客店IDやこきゃくIDに関連する別テーブルが10ほど存在します。 主キーが存在するレコードと重複していないかをまずチェックしてそこから基礎となるテーブルに書き換えを行いと考えているのですが、思考がそこで止まってしまっています。 よろしければアドバイスをよろしくお願いいたします。 代理店テーブル |代理店ID(主キー) |代理店名| | aaaaa | sample1| | bbbbb | sample2| 顧客店テーブル |代理店ID(主キー) |顧客店ID(主キー)|顧客店名| | aaaaa | a-00001| ○○1店| | aaaaa | a-00002| ○○2店| | bbbbb | b-00001| △△1店| | bbbbb | b-00002| △△2店| 顧客テーブル |顧客店ID(主キー) | こきゃくID(主キー)| こきゃく名| | a-00001| a-20071015-00001| Aさん | | a-00002| a-20071015-00002| Bさん | | b-00001| b-20050915-00001| Cさん | | b-00002| b-20050915-00002| Dさん |
- 締切済み
- Oracle
- 桐Ver9の主キーの設定
桐Ver9をWindowsXPで使ってます。 表定義で主キーを複数設定することってできないのでしょうか? 簡単に言うと、 伝票表(伝票番号,顧客ID,売上日) ~~~~~~~~ 明細表(伝票番号,商品コード,数量) ~~~~~~~~ ~~~~~~~~~ といったときの、明細表の[伝票番号]と[商品コード]なのですが。
- 締切済み
- オフィス系ソフト
- Accessから主キーの無いOracleテーブルにVBAで主キー設定付のODBC接続するには
Oracle7--------------- Access97 Workgroup Server Release 7.3.2.2.1 TABLE_A----------------ODBC接続(リンクテーブル) 項目1 項目2 項目3 項目4 項目1~項目4は 空白レコードがあり 主KEYが張れない ******************************************************************** 主キーの作成出来ないオラクルテーブルがあります。 Access97からODBC接続を作成する時は (1)マニュアルであれば 対象テーブルに主キーが無ければ 任意の10項目を仮の主キーとして設定出来ますが (2)VBA(自動?)で リンク張ると Dim tab01 As TableDef Dim db01 As Database Dim strTABname As String strTABname = TABLE名 Set db01 = CurrentDb Set tab01 = db01.CreateTableDef(UserName & "_" & strTABname, dbAttachSavePWD) tab01.SourceTableName = UserName & "." & strTABname tab01.CONNECT = "ODBC;DSN=****;UID=" & UserName & ";PWD=" & Password & ";ConnectString=con;" db01.TableDefs.Append tab01 主キー設定の無いODBC接続が出来て データの更新などが出来なくなります。 VBAでも仮の主キー設定付きのODBC接続は 出来ないでしょうか?
- ベストアンサー
- その他(データベース)
- phpMyAdminの主キーについて
phpMyAdminを用いて、MySQLを管理しております。 例えば、 ユーザーid int ユーザーpw int ユーザー名 varchar(20) 住所 varchar(30) 電話番号 varchar(10) 備考 text というように管理しております。 上記の場合ですと、主キーはユーザーidにのみ設定したいのですが、 int、varcharのデータ型にすると自動的に主キーが設定されてしまいます。(操作欄で主キーのアイコンがアクティブになる。) textですと主キーになりません。 主キーを解除しようとしますが、 #1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key というメッセージがでて解除できません。 主キーの設定はされていても、自分で主キーを設定したid以外は、同じ値を複数のレコードで保持できるので、問題はないのですが、これはどういう現象なのでしょうか?
- ベストアンサー
- MySQL
- 主キーが二つないと、フォーム入力が思ったようにできないのか?
こんばんは。 従業員の出入りが激しいため、従業員の入社時の「志望動機」と 「退社理由」をデータベースで残して 分析しようという試みのため、 入力用にフォームを作ったけどうまくいきません。 (1)社員基本情報テーブル(主キーは、社員コード。フィールドは、社員コード、氏名、入社日、退社日、部署) (2)入退社テーブルを新規に作成(主キーは社員コード。フィールドは志望動機、退社理由) (1)、(2)を社員コードで結合してクエリを作成しました。 このクエリを元に、フォームを作成しました。 こちらで作成したいフォームのイメージは 社員コードを入れると、氏名と部署、入社日、退社日が自動的に参照。 あとは志望動機と退社理由を入れる。 ところが、実際には 社員コードを入れても自動的に参照は行われず、ただ、一度フォームを閉じてもう一度開けるとそこには上記データが参照されてきます。 ちなみに、(2)で主キーを社員コードと志望動機の二つにすると うまくいったのです。 うまくいった理由も分からないですし、うまくいかなかった理由も分かりません。 これは何がどう悪くてこのようになっているのでしょうか?
- ベストアンサー
- その他(データベース)
- [DB設計]多対多の問題点とは
現在あるシステムを作成する上で、DB設計をしています。 このDB設計をする上で、多対多の状態だと良くない(できない?)とよく聞きます。 例)一人の学生は複数の講義を受講し、一つの講義には複数の学生が受講する。 この時に、学生の情報を格納する「学生DB(主キー:学生番号)」と、講義の情報を格納する「講義DB(主キー:講義番号)」を作成します。そうするとこの二つのDBの関係って、多対多になってしまうと思うのですが、この場合どのような問題が起きますか? 例がちょっとわかりにくいかもしれませが、要は 「DBを多対多の状態で設計した場合の問題点は何か?」 ということをお聞きしたいです。 よろしくお願いします。
- 締切済み
- その他(データベース)
- DBのinsert/updateを1ボタンでできる方法
スケジュール登録などで1つのボタンで スケジュールを新規登録する機能(insert)とスケジュールを更新する機能(update)を兼ねる場合どのように実装したらいいでしょうか?以下のやり方以外で、効率よくできる方法を知りたいです。どうかよろしくお願いします。 <実装例概略> ・フォームから値をとってくる。 ・その値がdbにはいっているか(select文)を調べる。 ・値がdbにはいっていればupdate文、dbにはいっていなければinsert文を発行する。 os:winxp(professional) db:Oracle9i
- 締切済み
- Java
お礼
ありがとうございます!! できました~助かりました。