2014年6月25日水曜日

MySQL:既存テーブルへ外部キーを追加する

<ALTER TABLEによるFOREIGN KEYの設定>

>> MySQL :: MySQL 4.1 リファレンスマニュアル :: 7.5.5.2 FOREIGN KEY 制約

【サンプル1】
-- 既存テーブル
CREATE TABLE `Foo` (
  `a_id` int(11) NOT NULL default '0',
  `b_id` int(11) NOT NULL default '0',
  `name` text,
  PRIMARY KEY  (`a_id`,`b_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8


-- 外部キー追加
ALTER TABLE Bar
ADD FOREIGN KEY (`a_id`, `b_id`)
REFERENCES `Foo` (`a_id`, `b_id`)
ON DELETE CASCADE
ON UPDATE CASCADE;

(メモ)
ON DELETE句やON UPDATE句にCASCADEを指定した場合は、
親テーブルに対して更新を行うと子テーブルで同じ値を持つカラムの値も合わせて更新されます。
また親テーブルに対して削除を行うと子テーブルで同じ値を持つデータが削除されます


-- 外部キー削除
ALTER TABLE Bar DROP FOREIGN KEY `Bar_ibfk_1`;
※ SHOW CREATE TABLE BarをしてFOREIGN KEYに自動的に割り当てられたKEYの名前(`Bar_ibfk_1`みたいなの)を予め調べる



【サンプル2】
-- 「T_02_1」表の「ID」列に対して、「T_01_1」表の「ID」列を外部キーとして設定します。
ALTER TABLE T_02_1 ADD CONSTRAINT FK_02_1A
FOREIGN KEY (ID)
REFERENCES T_01_1(ID);


以上。

2014年6月5日木曜日

WEBサイトのComboBox情報を取得するJavaScript

$('#db-dpt option').each(
function(){
console.log($(this).val() + ',' + $(this).text());
});

- 備考 -
赤RのHighwayBusの検索したい場合。
optionタグのValue値は、Val()で取得する。
Chromeからは、Consoleタブを選択して上記のソースを貼り付ける。

2014年6月2日月曜日

1行書き 不要なファイルを消す



/tmpにある、10分以上経過したファイルを消す。

find /tmp/ -type f -mmin +10 -exec rm {} \;

2014年5月22日木曜日

cssで範囲選択できないようにする


for firefox chrome khtml (css)
-moz-user-select: none;
-webkit-user-select: none;
-khtml-user-select: none;

for IE (attr) ※子要素には引き継がれない
unselectable="on"



phpexcelでの高さ自動調整



// 10行目の行を引数なしで高さ自動調整
$objSheet->getRowDimension(10)->setRowHeight();

2014年5月21日水曜日

コンソールからjqueryを読み込ませる


chromeのデベロッパーツールから、


var _cjq={};_cjq['s']=document.createElement("script");_cjq['s'].src='//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js';_cjq['b']=document.getElementsByTagName('body')[0];_cjq['b'].appendChild(_cjq['s']);


を実行すると、
jqueryがないサイトでもコマンドラインから使えるようになる。


参考サイト
http://blog.engine04.com/2013/04/02/force-anywhere-to-load-the-jquery/



2014年5月19日月曜日

PHPExcelでの名前定義に値をセットする際の注意点


エクセルテンプレートを使用する際、名前定義が複数カラムを指定されていると
値セット時にエラーになる。


名前定義「entry」が結合セル「$A$1:$A:$3」であっても、
名前定義自体は、$A$1:$A:$3ではなく、$A$1にしないと値セットされない。


$objSheet->setCellValue('entry', .100'名' );