伝票のヘッダと明細を一度にロックしたいけどヘッダ単位でforループしたいんです

いま直面している問題においては、別に一度にロックできる必要なんてなくねって感じではあるんだけど。 ヘッダと明細を普通に内部結合して、ヘッダのカラムだけselectしてdistinctすればよくね?と思ったけど、distinctとfor updateは共存できないんです。 s…

for update句でオープンしたカーソルのforループ内でcommitしたらどうなるのっと

for update付きカーソルのforループ内でcommitしてみた。 for rec in ( select h.employee_id as employee_id, h.job_id as job_id, h.start_date as start_date from jobs j, job_history h where j.job_id = h.job_id and j.job_id = 'ST_CLERK' for updat…

OracleDBのselect for updateってどのへんのレコードまでロックしよる?

結合したテーブルの該当行までロックしよる? select j.*, h.* from jobs j, job_history h where j.job_id = h.job_id and j.job_id = 'ST_CLERK' for update; JOB_ID JOB_TITLE MIN_SALARY MAX_SALARY EMPLOYEE_ID START_DA END_DATE JOB_ID DEPARTMENT_ID…

自インスタンスのインスタンスメソッドを呼び出す時の、selfの使い方がよくわからないんです

class Sample attr_accessor :abc def xyz;@xyz;end def xyz=(v);@xyz=v;end def asdf=(v); p "in asdf with #{v}";end def set abc = 'def' xyz = 'uvw' asdf = 'axvaf' end def print p abc p xyz end def set2 self.abc = 'def2' self.xyz = 'uvw2' self.…

トランザクションのメモ

TX本勉強会終了 - 急がば回れ、選ぶなら近道 DBトランザクションメモ(Hishidama's database transaction Memo) ACID (コンピュータ科学) - Wikipedia) そういえばなミック氏のDB本がKoboにあった。Google Play Booksにもあったけど。 達人に学ぶDB設計 徹底…

ActiveRecordでINNER JOINしつつEagerLoadingしたいんです

対象の表に対してふつうに.joins()して.includes()すればいいようです。 ruby 1.9.2p290 (2011-07-09) [i386-mingw32] activerecord (3.1.0) activerecord-oracle_enhanced-adapter (1.4.2) railsでinnner joinするクエリを元に一覧表示画面を表示する場合、…

同一項目に同一バリデータによるバリデーションを複数種書きたいんです

max_salaryによってjob_titleのバリデーションを変えたいなあと思った場合、validatesの記述自体を分けて↓こう書けばよい。 class Job < ActiveRecord::Base self.primary_key = :job_id validates :job_title, length: {maximum: 5, if: ->{max_salary <= 1…

attr_accessorにデフォルト値を持たせたいんです

ぐぐると真っ先にattr_accessor_with_defaultが出てくるから使ってみたらundefinedって言われた。。 今はこう書くのが正しい。 class Employee < ActiveRecord::Base attr_accessor :a after_initialize do self.last_name = 'tanaka' self.a = 'ito' end en…

ActiveRecordでサブクエリのIN句を書きたいんです

ruby 1.9.2p290 (2011-07-09) [i386-mingw32] activerecord (3.1.0) activerecord-oracle_enhanced-adapter (1.4.2) IN句自体はバインド変数を配列にすれば勝手にいいようにしてくれるようです。 サブクエリはArelを徹底活用するのがいいようです。“ふつうに…

saveしているはずなのにsaveできないんです!

ruby 1.9.2p290 (2011-07-09) [i386-mingw32] activerecord (3.1.0) activerecord-oracle_enhanced-adapter (1.4.2) Oracle 11g XEのHRスキーマで SQL> select employee_id, first_name from employees where employee_id = 100; EMPLOYEE_ID FIRST_NAME ---…

ActiveRecordのloggerがカラーコードを付加してきて見づらいんです!

ruby 1.9.2p290 (2011-07-09) [i386-mingw32] activerecord (3.1.0) activerecord-oracle_enhanced-adapter (1.4.2) loggerをしこんでActiveRecordのログを見てみる。 require 'logger' ActiveRecord::Base.logger = Logger.new(STDOUT) するってーと D, [20…

トリガーやストアドプロシージャのソースが見たい。SQL*Plusで。

SQL> conn hr/hr@xe 接続されました。 SQL> select name from user_source group by name; NAME ------------------------------------------------------------ SECURE_EMPLOYEES UPDATE_JOB_HISTORY SECURE_DML ADD_JOB_HISTORY これでソースがしまってあ…

Oracle 11g XEのHRスキーマのテーブルをActiveRecordで書いてみる

Oracle 11g XEのHRスキーマのテーブルをActiveRecordで書いてみる ER図はこちら: 表と表クラスタ class Region < ActiveRecord::Base primary_key = :region_id has_many :countries end class Country < ActiveRecord::Base primary_key = :country_id bel…

sqlplusの画面表示設定の仕方って毎度忘れるからメモ

set linesize 1000 set tab off これでvarchar2型の列の余白が許せなかったらcolumn name format aXXみたいな。

普通のRubyスクリプトからOracle 11g XEにActiveRecordで繋ぎに行く

必要なgemをインストール PS:Desktop> gem install activerecord-oracle_enhanced-adapter Fetching: activerecord-oracle_enhanced-adapter-1.4.2.gem (100%) Successfully installed activerecord-oracle_enhanced-adapter-1.4.2 1 gem installed Installi…

oracle 11g xeにいつものように用意してあるHRスキーマを初期化

PS:yoshi-13> sqlplus hr/hr@xe SQL*Plus: Release 11.2.0.2.0 Production on 土 6月 15 02:14:48 2013 Copyright (c) 1982, 2010, Oracle. All rights reserved. ERROR: ORA-28000: the account is locked そうなんですね。。 SQL> alter user hr account u…

powershellのプロファイルを変更してプロンプトを変える

プロファイルを作成してprompt関数を上書きする 参考 PowerShellでプロファイルを編集するには - nn2003rの日記 PowerShellのプロンプト文字列をカスタマイズする - @IT やってみる New-Item -type file -force $profile sakura $profile でプロファイルに…

validatesでうまくlambdaを扱えなかったメモ

Ruby version 1.9.3 (i386-mingw32) Rails version 3.2.12 Database adapter oracle_enhanced モデルで validates :user, presence: {if: lambda{via == "abc.com"}}, customer_master: {address_presence: lambda{via == "abc.com"}} と書いて、このcustome…

VirtualBox + Ubuntu 12.04 + Oracle 11g XE → 早速あきらめた

VirtualBoxへUbuntuをインストール Ubuntu Japanese Teamが既に.vhdを用意してくれているので拍子抜けするほど簡単だった。 仮想ハードディスクイメージのダウンロード | Ubuntu Japanese Team 画面の解像度が低い。。 VirtualBoxのメニューのデバイス > Gue…

Railsの規約に沿わないシーケンスオブジェクトを利用する

モデルでself.sequence_name = 'hoge_sequence'などと書く。 select hoge_sequence.nextval from dualなどを直接実行する。 もうちょい詳しく USERSテーブルがある場合、Rails的にはUSERS_SEQというシーケンスがあることを想定している。 USERSが新しく作る…

テキストリンクでフォームを送信する

とりあえずはこのノリでいける。 link_to_function "text to submit", "$(this).closest('form').submit()" link_to_functionはonclickにreturn false;を書き足してくれるんですね。 他にも書き様は色々あるというのは参考リンク参照。 参考 Rails 3 submit …

尻とか魂とかに

でも正直気持ちいいことじゃないです。 ぼちぼち書いてみます。。