- ベストアンサー
重複なしのフィールドにつき、重複データ挿入時上書きする設定は?
こんにちは。 主キーないしユニークキーなどで、 重複しない設定にしたフィールドで、 重複データを入力されたとき、 入力できないのではなく、上書きされる、 設定にしたいのですが、 どのような方法が、あるでしょうか。 (いちいち、古いデータを削除しなければ、 ならないのでしょうか。) お願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
こういう事情は最初に説明しなきゃ あるテーブルの値で既存のテーブルを書き換えたいのなら更新クエリです INSERじゃなくUPDATEね 既存テーブルと書き換えデータを持ったテーブルを クエリデザインビューに取り込み、主キーで結合 既存テーブルから主キー以外を取り出し 更新クエリに変えて、レコードの更新欄に書き換えデータテーブルのフィールドを指定します
その他の回答 (4)
- yambejp
- ベストアンサー率51% (3827/7415)
もしMySQLなら、REPLACEがあります。 データがなければ、INSERTとしてはたらき、 データがあれば、UPDATEのような動きをします。 (※厳密にはいろいろ制限はありますが) 他のDBに有効かどうかはしりません
お礼
回答ありがとうございます。 Accessを使っています。 MySQLのREPLACEコマンドは、途中で知りました。 Accessにないのは、残念です。
- chukenkenkou
- ベストアンサー率43% (833/1926)
「その他(データベース)」というカテゴリに、使用しているDBMS名を明記しないで質問されることは、利用者として非常に迷惑なのですが、そのことを理解しているでしょうか? 質問のタイトルに、使用しているDBMS名と、質問内容の概略のキーワードを最低限、記すことを希望します。 そうでないなら、他の利用者に対する迷惑行為と判断されても、仕方ないことを理解してください。
- CHRONOS_0
- ベストアンサー率54% (457/838)
出来ないといっているわけじゃないですよ 重複さえしなきゃいい、何でもかんでも書き変えていいのなら いったん、非連結のフォームか、ワークテーブルに入力し 重複を調べて、重複なら更新、新規なら追加というような手順になります (データの整合性チェックなどかなり大量のコードを書くことになります) しかし、データベースでは入力されているレコードを 逐次更新するというようなテーブルの使い方はあまりしません 入力日時などを付加して新しいレコードとして追加していきますね
お礼
回答ありがとうございます。 説明不足だったかもしれませんが、 あるテーブルに別のテーブルデータを 追加する際に、主キーたるID(日時です)の 重複するデータがいくつか、含まれていました。 主キー以外の部分では、追加するデータの 方が、正しいのです。 これを一回のINSERT文で、済ませたかったので、 主キーが同じデータの上書き、というものが ないかと、考えました。 しかし、CHRONOS_0さんの説明で、どうやら、 無理らしいことがわかりました。 それなら、別の方法を、考えようと思います。
- CHRONOS_0
- ベストアンサー率54% (457/838)
データの整合性を保つためにわざわざ設けた制限を無視するのですか? 必要のないものならそのような制限そのものを設けない というほうがまともな考え方だと思いますが・・・・
お礼
回答ありがとうございます。 重複ありとすると、そのフィールドにつき、 2つのデータが出来てしまいます。 データは、ひとつですが、後から入力されたほうに 上書きされれば、便利と、思ったのですが。
お礼
回答ありがとうございました。 やっぱり、既存の方法で繰り返し行うしか、 ないようです。 経験者の意見が聞けて、参考になりました。