ねこきっくぱんちのメモ帳

ITに関することいろいろめも。たまにアニメ。

MySQL014 ビュー(書き込み制限・変更)

chap11

■書き込み制限
・ビューへのinsertには制限がある。
union,join,サブクエリなどで複数テーブルが複合されたものはできない。
純粋な1テーブルなら可能。ただし、必須カラムがあると多分エラーになる。

insert into v1 values('アルバイト・石田',18);

・ビューの条件に合っていなくても、元テーブルには挿入される(売上100万以上)
create view v3 as
select bang,uria from tb10 where uria>=100;
insert into v3 values('意地悪',50);

・ビューの条件に合っていない場合はエラーとする。(売上100万未満はエラー)
WITH CHECK OPTION

create view v4 as
select bang,uria from tb10
where uria>100 with check option;

insert into v4 values('意地悪',50);
//ERROR 1369 check option failed 'db1.v4'


■ビューの上書き・変更・削除
・上書き(OR REPLACE)
create or replace view v1 as select now();

・カラム構造を変更(ALTER VIEW)
alter view v1 as select nama,tosi from tb11;

・削除
drop view if exists v1;
//dropでは対象ビューが存在しないとエラーになるため、if existsを付与


・練習
create view v_uria as
select bang,avg(uria) from tb10
where uria>=50
group by bang
having avg(uria)>=120
order by avg(uria) desc;

レプリケーションとは?
レプリカ、DBの複製品(コピー)のこと。マスター/スレーブ。
ホットスタンバイの場合、マルチマスターとする。
また、処理効率化のため、書き込み系(update,insert)はマスターで、
読み込み系(select)はスレーブに担当させるなどもある。

同期に関しては、マスターから「バイナリログ(処理の記録)」を
スレーブに送信し内容を一致させることができる。
※同期/非同期の"タイミング"には注意が必要。

MySQLレプリケーションは非同期だが、
ver5.5からは一部の過程を同期することが可能。
ただし、実行完了!の表示の後に、バイナリログのスレーブ
書き込みが行われるため、準同期と呼ばれる。

■参考
本:基礎からのMySQL