- PR -

【C#・MSSQL】COUNTの結果をINSERTしたい

投稿者投稿内容
Wingard
大ベテラン
会議室デビュー日: 2004/10/04
投稿数: 168
お住まい・勤務地: 頭の中はファンタージェン
投稿日時: 2006-09-22 13:33
>ぶさいくろうさん
いえ、普段別の方の回答に対しては回答されているのを存じています。
これからもよろしくお願いいたします。

ところで、カウントするテーブルと挿入するテーブルが一緒というのは、例えば無限ループでカウントが増え続けるといったようなことは想像できますが、それ以外に何か「SQLのシステム的によくない」といったような、慣習的によくないことが起こるのでしょうか?

ちょっと曖昧な表現ですが、いわゆるほかの方が「なんとなくしない」ようなことであれば、できるだけ避けようと思いますので、お手数ですがご回答いただければと思います。

_________________
◇◇◇ 社内SEを兼務する文系プログラマです。
◇◇◇ WinXP VisualStudio2005(C#メイン) MS・SQLServer とかを使っています。
◇◇◇ 周囲にプログラマがいないので、みなさんだけが頼りですヽ(`Д´;ノ
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2006-09-22 13:39
引用:

Wingardさんの書き込み (2006-09-22 13:26) より:
あ、カウントと挿入するテーブルは同じでも問題ないと考えています。

構造上どうやってもPrimaryKeyを1つにすることができませんでしたので、日付とその日に挿入されたデータの日ごとのIDによって一意なものとしようとしていました。ただ、1日にいくつデータが出てくるかがわからないため、動的に変更する必要があり、今回のような質問をさせていただきました。



私には難しくてよくわからない_| ̄|○
Wingard
大ベテラン
会議室デビュー日: 2004/10/04
投稿数: 168
お住まい・勤務地: 頭の中はファンタージェン
投稿日時: 2006-09-22 13:45
ああ、申し訳ありませんorz

言い直します。
1日にいくつデータが出てくるかがわからないので、日付を主キーにすると重複がおこります。また、そのデータも出てくる検索して出てくる順番にも意味があり、単純に自動で番号を割り振ることもできないので、出てきた順番にIDを割り振ろうと思い、カウントさせてそのカウント数をIDに割り振ろうとしました。


_________________
◇◇◇ 社内SEを兼務する文系プログラマです。
◇◇◇ WinXP VisualStudio2005(C#メイン) MS・SQLServer とかを使っています。
◇◇◇ 周囲にプログラマがいないので、みなさんだけが頼りですヽ(`Д´;ノ
eternia
常連さん
会議室デビュー日: 2006/02/23
投稿数: 42
投稿日時: 2006-09-22 14:15
引用:

Wingardさんの書き込み (2006-09-22 13:45) より:
また、そのデータも出てくる検索して出てくる順番にも意味があり、単純に自動で番号を割り振ることもできないので、




引用したあたりがよくわからなかったので間違ってたらすいません。

現状> 日付+その日の連番
であれば別にIDの自動採番でも問題ない気がします。
PrimaryKeyも1つで済みますし。
(結局検索時は日付条件でもってくるのですよね?)
七味唐辛子
ぬし
会議室デビュー日: 2001/12/25
投稿数: 660
投稿日時: 2006-09-22 14:18
select max(id) + 1 as Maxid from hogehoge

必要最小限のコードを書くとこんな感じ
Wingard
大ベテラン
会議室デビュー日: 2004/10/04
投稿数: 168
お住まい・勤務地: 頭の中はファンタージェン
投稿日時: 2006-09-22 14:32
>eterniaさん
ご回答ありがとうございます。
今後、その行数をカウントした値を使おうかと思っていましたが……そうですね、現状ではその値は使わなくてもできますので、使わない方向で進めることも考えてみたいと思います。間に合うことが第一なので(´Д`;

>七味唐辛子さん
ご回答ありがとうございます。
参考にさせていただきます。

_________________
◇◇◇ 社内SEを兼務する文系プログラマです。
◇◇◇ WinXP VisualStudio2005(C#メイン) MS・SQLServer とかを使っています。
◇◇◇ 周囲にプログラマがいないので、みなさんだけが頼りですヽ(`Д´;ノ
eternia
常連さん
会議室デビュー日: 2006/02/23
投稿数: 42
投稿日時: 2006-09-22 14:52
いえ、行をカウントした値を入れるわけではなく
テーブルの設定で自動採番したらいいのでは?という意味です。

一緒にINSERTと行のカウントをしたことがないので微妙ですが……
全く同時刻に同じ処理が動いた場合は同じ値が入らないのですかね?
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2006-09-22 15:10
設計し直した方が良いですよ。

カウント数をプライマリキーにするんですよね。レコードが削除される事があるなら、プライマリキーが重複する事になりますがその辺りの考慮はされてますか?

他の方が仰っているように、こういう場合は自動採番が普通かな、と思います。

引用:

一緒にINSERTと行のカウントをしたことがないので微妙ですが……
全く同時刻に同じ処理が動いた場合は同じ値が入らないのですかね?


一度にクエリを実行すれば問題ないと思います。別々に発行するなら、ロックするなりしないと駄目ですよね。
_________________
囚人のジレンマな日々

スキルアップ/キャリアアップ(JOB@IT)