SQLなら俺に訊け [無断転載禁止]©2ch.net

2025/01/24(金) 11:19:27.52ID:SzuokRLj
分かってないのになぜ無理して絡もうとするのが
2025/02/03(月) 18:36:54.12ID:hEyRnoXc
PostgreSQLを使っているのですが、

更新前のデータも参照したいので、
更新処理を、元のデータに変更を加えたデータを追記し、更新元のデータに最新ではないフラグを付ける形でやっています。

新しくカラムを追加したのですが、更新処理の変更を忘れて、更新すると新しいカラムがデフォルト値に戻されてしまうバグを作ってしまいました。

既存の行をコピーして、primary keyと変更したいカラムだけ変更する方法ってありませんか?
2025/02/03(月) 23:14:40.68ID:k1KW9LUA
>>425
>既存の行をコピーして、primary keyと変更したいカラムだけ変更する方法ってありませんか?
この質問はバグにより作成されたデータの復旧作業方法として質問してる?
それとも一般的にそういう方法ないかということ?
あるいはカラム追加やカラム名の変更があっても更新処理のSQLを修正しなくてもいいようにする方法を聞いてる?

>更新前のデータも参照したいので、
ここで言いってる”参照”は外部キーとして他のテーブルから参照するという意味?
それとも単に更新履歴が閲覧できればいいという意味?
2025/02/06(木) 00:29:05.51ID:4njYbkok
>>425
あるよ
selectしたものを使ってupdateすればいい
428デフォルトの名無しさん
垢版 |
2025/02/07(金) 21:07:33.75ID:lNWVt+S0
>>425
トリガーというものがあります
429デフォルトの名無しさん
垢版 |
2025/02/07(金) 21:08:11.88ID:lNWVt+S0
>>425
https://www.postgresql.jp/docs/9.4/sql-createtrigger.html
2025/02/07(金) 22:21:05.36ID:mS2jfvem
むしろトリガーの変更を忘れてバグったんじゃないの?
2025/02/07(金) 23:13:03.59ID:El81lTJA
> PostgreSQLでは、トリガ動作として、ユーザ定義関数の実行しか認めていません。
> 標準では、多数の他のSQLコマンドを実行させることができます。
> 例えば、トリガ動作としてCREATE TABLEを実行させることも可能です。
> この制限を回避する方法は簡単です。必要なコマンドを実行するユーザ定義関数を作成すればよいのです。
糞仕様杉ワロタ
432デフォルトの名無しさん
垢版 |
2025/02/08(土) 11:50:00.86ID:+3qBIV3v
> この制限を回避する方法は簡単です。必要なコマンドを実行するユーザ定義関数を作成すればよいのです。

この方針は正しいと思うけどな
こういうセキュリティに敏感な場所は出入口を一ヶ所に絞るのは基本だよ
2025/02/08(土) 12:46:18.46ID:3VVdck+P
いや色々おかしいよお前、多分DB板出身だろうから帰れ
逆に質問者もDB屋ならDB板の方が合ってるとも思うが
2025/02/08(土) 13:11:35.92ID:fsW85FYF
正しいわけないだろw

Postgresの仕組み的に関数化が必要なら内部的にラップしとけばいいだけ
実行権限をトリガに対して設定できないとか非標準を維持し続けるほど大した意味はない
2025/02/09(日) 03:19:16.45ID:BAiRqfzU
ここの人らはNoSQLはどういう扱いなの
2025/02/09(日) 12:18:58.85ID:kD9FDD3o
俺個人としては同じDB枠の扱い
プライマリキーやインデックス等、DBとしての使い方は同じで、
それを設定する言語が、SQLか、或いは一般プログラミング言語か、という程度だから

だからこのスレも俺には「DBなら俺に訊け」でもいいんだが、このスレはテンプレないんだな
俺が主流派かどうかは分からない
SQLじゃないとヤダ、って奴が多ければスレを分けるべきだろうが、
正直分けるほど人いないし、NoSQLもここで聞いていいのでは?答える奴が居るかは知らんが

ただ、383も425も、SQLではなく、DBを分かってないから話がおかしくなってるので、
実質SQLではなくDBの質問になってるし、NoSQLでも結果的に同じだと思うよ

個別DBに特化した話等なら、DB板に行った方がいい
ただ、DB板の連中はプログラミングをしない/出来ないようなので、
432のように、プログラマから見たら明らかにトンチンカンな回答が返ってくる
それでもDB固有の問題には詳しいだろうよ
437デフォルトの名無しさん
垢版 |
2025/02/09(日) 18:18:30.19ID:qhqoX22r
>>431
トリガーそのものにロジックは必要ないとしてトリガーを仕様に取り込んだせいでそうなっただけ
438デフォルトの名無しさん
垢版 |
2025/02/09(日) 18:19:47.93ID:qhqoX22r
>>434
Oracle以外はあとからOracleDBに追従したから、元のクソ仕様のせいで制限がたくさんある。
2025/02/09(日) 18:31:02.14ID:mMq7ancL
出た!
DB板の荒らし
通称ボラクル君w
2025/02/09(日) 22:11:42.79ID:uTje1YE2
>>436
おまえ>>383のやり取りで嘘ばっか書いてたやつじゃん
反省したのか?
2025/02/09(日) 22:42:05.59ID:JhqniwEL
ならお前が正しいと思うことを書けばよいだけでは?
2025/02/10(月) 00:33:14.69ID:VZ2XQokR
nosqlは独自に覚えなきゃいけないことが多すぎるうえに制約も多い
awsとazureで同じ設計が通じるわけでもないし
443デフォルトの名無しさん
垢版 |
2025/02/10(月) 11:53:19.06ID:Z13/KCo3
KVSですね判ります
2025/02/10(月) 12:41:14.64ID:y2n5AJNm
ベンダー違っても中身は全部Redisという場合もあるし単純なセッション管理にKVSを使うとかならベンダー違っても基本的に同じ設計になるしユースケース次第でいろいろ

NoSQLって言うだけだとリレーショナルじゃないくらいの意味しかなくて広すぎるから細かい話は一括りにはできない
2025/05/11(日) 23:41:50.22ID:SmeYoeAy
ミックさんの達人SQLは名著だと思うんだけど、関係が体であるとしている点については、群ですらないというamazonレビューの指摘の方が正しいように思うんだよね。ただ自分は文系で群とかちゃんと勉強したことないのであまり自信はない。数学できる人教えて。
446デフォルトの名無しさん
垢版 |
2025/05/12(月) 19:12:28.13ID:RxQ7/dSc
>>445
集合は数学とは違うよ
2025/05/13(火) 14:41:24.56ID:C/NhftFY
SQLで無限集合出来んかな
448デフォルトの名無しさん
垢版 |
2025/05/14(水) 00:52:49.17ID:qxlPxgMn
なんで havingとwhereは使い分ける必要があるの?
全部whereで済むように仕様を直してほしい
2025/05/14(水) 01:47:48.71ID:tUJULNxS
意味違うと思うぞ。whereだけじゃ足りないんじゃね
2025/05/14(水) 01:55:11.10ID:tUJULNxS
評価対象が行とグループ
評価タイミングも違うとchatGPTが教えてくれた
2025/05/14(水) 06:22:22.00ID:qNLCsgAG
そんなこともAIに訊かなきゃわからないんかよw
2025/05/14(水) 08:46:47.35ID:e7a03hqN
スレ主じゃないので
LLM勉強になるぞ
453デフォルトの名無しさん
垢版 |
2025/05/14(水) 11:40:16.61ID:Ran/8XYC
グループ化と関係なくHAVINGを使っているんだろうなw
454デフォルトの名無しさん
垢版 |
2025/05/14(水) 11:41:17.83ID:Ran/8XYC
>>452
AIチャットは間違いを指摘してくれない
2025/05/14(水) 12:56:57.46ID:1iop83U8
LLMの勉強する前に対人会話の勉強しよう?
2025/05/14(水) 13:29:13.49ID:e7a03hqN
お前らもネラーだからLLMと大差ないぞ
教科書レベルの話はLLMさんが正確さ
2025/05/15(木) 09:52:35.44ID:3t3KbsMR
結局、>>445ってどう? 素人考えでは、群の条件のうち、「任意の元に対する逆元が存在する(逆元も関係の元である必要がある)」を、関係および関係上の演算は満たさないようにも思うんだけど。
レスを投稿する

5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況