mysql:16218
From: HIRATSUKA Sadao <HIRATSUKA Sadao <sh2@xxxxxxxxxx>>
Date: Wed, 4 Mar 2015 07:15:55 +0900
Subject: [mysql 16218] Re: MySQLでinvalid object確認する方法
こんにちは、平塚と言います。 2015年3月2日 10:40 <kiro0318@xxxxxxxxxx>: > MySQLでoracleのようにinvalid objectを確認する方法はありますか? > > > 効率的に確認する方法は、ないと思います。 ■プロシージャの場合 (1) プロシージャを定義して実行 DROP PROCEDURE IF EXISTS test_invalid; DELIMITER // CREATE PROCEDURE test_invalid() DETERMINISTIC BEGIN SELECT ename FROM emp WHERE empno = 7788; END // DELIMITER ; CALL test_invalid(); +-------+ | ename | +-------+ | scott | +-------+ (2) テーブル名を変更 ALTER TABLE emp RENAME emp_renamed; (3) プロシージャを実行するとエラー CALL test_invalid(); ERROR 1146 (42S02): Table 'scott.emp' doesn't exist ■ビューの場合 (1) ビューを定義して参照 CREATE VIEW emp_view AS SELECT * FROM emp; SELECT * FROM emp_view; (SELECT結果は省略) (2) テーブル名を変更 ALTER TABLE emp RENAME emp_renamed; (3) ビューを参照するとエラー SELECT * FROM emp_view; ERROR 1356 (HY000): View 'scott.emp_view' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them == Oracle DatabaseではDBA/ALL/USER_OBJECTSでINVALID列を確認することにより (2)と(3)の間で事前にチェックをかけることができます。 MySQLでは私の把握する限りそのような仕組みはないです。 プロシージャでしたら動作確認する、ビューでしたらSELECT文を実行してみる 必要があると思います。
@ 16216 2015-03-02 10:40 [ <kiro0318@xxxxxxxxx] MySQLでinvalid object確認する方法 -> @ 16218 2015-03-04 07:15 ┗[HIRATSUKA Sadao <sh2]