- - PR -
主キーが重複していてもエラーでとめたくない or 上書きしたい
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-12-22 13:42
お世話になります。
検索ワードがわからなかったので、質問させてください。 Microsoft SQL ServerでASPを作っているのですが、 そこでデータをSQL構文でINSERTやUPDATEするときに、 主キーが重複していると通常はエラーとなって 処理ができずに終了してしまうと思います。 そこで、主キーが重複していてもエラーでとめない方法や、 データを上書きしてしまう方法など、 何か良いSQL構文はありませんでしょうか? 言ってることがよくわからないかもしれませんが、 うまく表現できないので、ひとまず質問を投げさせていただきます。 _________________ ◇◇◇ 社内SEを兼務する文系プログラマです。 ◇◇◇ WinXP VisualStudio2005(C#メイン) MS・SQLServer とかを使っています。 ◇◇◇ 周囲にプログラマがいないので、みなさんだけが頼りですヽ(`Д´;ノ | ||||||||
|
投稿日時: 2006-12-22 14:05
INSERTの時はともかく、UPDATEでもなっちゃうんですか? もし、UPDATEの結果が制約に引っかかるようなら、正常な結果ですよね。
止めない方法なんて、別に難しくないでしょう。 事前にチェックするか、またはエラーをキャッチして、 代替ロジックに移行すればいいです。 上書きについては、上でも書きましたが、 どんなエラーが出るのか、もっと具体的に教えて頂けますようお願いします。 [ メッセージ編集済み 編集者: Edosson 編集日時 2006-12-22 14:06 ] | ||||||||
|
投稿日時: 2006-12-22 14:07
こんにちは。
INSTEAD OF トリガ の利用を検討されてはいかがでしょうか。 INSTEAD OF トリガ は制約が処理される前に発動するので、お望みの処理を実現できると思います。 _________________ 上本亮介 (ue) @ わんくま同盟 Microsoft MVP for VSTO (Jul 2008 - Jun 2009) Hello Another World! .NET 勉強会 / ヒーロー島 | ||||||||
|
投稿日時: 2006-12-22 14:30
ご回答ありがとうございます。
INSTEAD OF トリガでできそうな気がします。 参考書に載ってないので、今調べているところですが、 ひとまずお礼申し上げます。 >UPDATEでもなっちゃうんですか? すみません、書き方が悪かったです。 通常はINSERTなどでデータを挿入するのですが、 それだと中にデータが入っている場合に重複するとエラーがでます。 で、UPDATEを使えば重複は防げるんですが、 ときどき中にデータが入っていないときもあり、 そのときに今度はUPDATEがエラーを吐いているようです。 なので、重複データをINSERTしてもエラーを出さない方法か、 中身が空でUPDATEしてもエラーを出さない方法が知りたいと思いました。 以上、おかしな点などありましたらご指摘いただけますでしょうか。 よろしくお願いいたします。 | ||||||||
|
投稿日時: 2006-12-22 14:56
ああ、ご回答いただいていて申し訳ないですが、
どうも SELECT DISTINCT でできそうです。 すみません、結果的に重複してないデータが取りたかっただけなので、 これで十分みたいです。 お手数をおかけしました。本当に申し訳ありません。 今後ともよろしくお願いいたします。 |
1