その場編集モード
なんか2月にはいってから 新しい日記を書く際に使ってた +ボタン(その場編集ボタン)が忽然と姿を消したもんだからうまく編集できなくて困っていたわけですが。
今日日記を書く際にTipsで、2月1日からはその場編集ボタンは設定からONにしなくてはいけないという罠・・・
なんですかこのいきなり仕様変更は・・・orz
だいぶやられましたよ・・・
最近はPagmoのためにとりあえずガツガツとMysqlを触っているわけですが
2つのテーブルにデータをまたがせる方法をずっと調べていました。
以下のようなキャラクターテーブルがあって、IDはMysqlで自動振り
Character cid integer NOT NULL AUTO_INCREMENT primary key,\ name varchar(255) DEFAULT 'noname' NOT NULL,\ fname varchar(255) DEFAULT 'default' NOT NULL,\ ...
同時に以下のようなオブジェクトテーブルがあるとして
Object cid integer NOT NULL primary key,\ <<ここに対応するキャラクタのIDを入れたい uid integer DEFAULT '0' NOT NULL,\ script text DEFAULT NULL,\ ...
オブジェクトはプログラム内でキャラクタ継承して、そこにオブジェクト固有のデータがついているわけですが、保存する際は
>characterテーブルを保存
>MySQLで自動に振られたIDを取得
>objectテーブルに取得したキャラクタIDを入れて保存
とやるわけです
ここで問題なのが自動振り分けをした際のIDを取得する方法で、SELECT LAST_INSERT_ID();を送れば最終InsertIDが分かるわけですが、そんなことをやっていると他のサーバーが同時にインサートをしたらぐちゃぐちゃになっちゃうのは目に見えているわけで。
トランザクションでなんとかすることも考えつつ、果てしなく面倒でげんなりしていた所
INSERT INTO foo (auto,text) VALUES(NULL,'text'); INSERT INTO foo2 (id,text) VALUES(LAST_INSERT_ID(),'text');
とかやるとあっさりと解決するらしい・・・
是非リファレンスブックのINSERTの辺りかAUTO_INCREMENT周辺にTipsとして記載していただきたいところだ・・・・
それとも書くのもばかばかしいくらいに初歩的なことなんだろうか・・・(悩
↓参照
http://dev.mysql.com/doc/refman/4.1/ja/odbc-and-last-insert-id.html