- ベストアンサー
INSERT操作で出るエラー
perlのDBIを使いDBに接続してINSERTしようとしました (Postgresです)。 INSERT操作は成功したのですが、同じ数字を挿入させたら 上書してしまいます。 このときはエラーを返すというプログラムはどうすればよいのですか? 本で調べたら、つかえそうな$h->stateをみつけましたが使い方がのって いないし現在理解できていない状態です。お願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
>INSERT操作は成功したのですが、同じ数字を挿入させたら 上書してしまいます。 PostgreSQLはやったことがないのですが PostgreSQLはそうなんですか? 普通、Insert文とUpdate文があって、Insert文で既存のレコードを上書きしようとすると、多分エラーが出ますよ。 もしでない場合には、事前に該当するレコード数を取得しておくことにより判別出来ると思いますよ。私はエラーはこまるのでこんな感じでやっています。 つまり、最初に Select Count(*) From ATable で、数を取得して、0ならば、Insert、1以上ならばエラーにするとか…
その他の回答 (1)
- VanillaTea
- ベストアンサー率52% (13/25)
>INSERT操作は成功したのですが、同じ数字を挿入させたら >上書してしまいます。 上書されていることをどうやってチェックしましたか? 1. DBIがエラーを返しているが、それをチェックしていない 2. その数字が入るカラムが primary key でないので、正常動作 (同じ値であっても、いくらでもinsertできる) のどちらかかと思われます。 tableがどのように設定(設計)されているかわかりませんが、 質問内容でわかるのはこれくらい。 河馬屋二千年堂さんとこのDBI和訳ページのリンクをはっておきます。 Perlの小技 http://member.nifty.ne.jp/hippo2000/perltips/index.htm 下はその中のDBIのページ