データベース内でいくつかの数学演算を行っており、すべてのプロシージャで認識される const 値を宣言したいと考えています (たとえば、PI のように)。
MySqlにこのようなものはありますか?
以下の解決策が満足のいくものであることがわかった場合。これは、式の結果が 1 つの行しか返さない場合にテーブルを定数に置き換えるコンパイラの最適化に基づいています。MySQL マニュアルを参照してください。これは、たとえば、null 以外の一意の列の値を指定する場合に当てはまります。
これは、いくつかの定数があり、それぞれに対して関数を作成したくない場合に特に意味があります。おまけとして、関数を再定義する代わりに、何らかのフロントエンドを使用して、定数値を便利に編集できます (構成目的に役立つ場合、必ずしも pi を変更したい場合ではありません)。また、関数をダンプするよりもテーブルをダンプする方が簡単なので、データベースを転送する方が簡単な場合もあります。
CREATE TABLE `constant` (
`id` varchar(45) NOT NULL,
`double_value` DOUBLE DEFAULT NULL,
PRIMARY KEY (`id`)
);
INSERT INTO constant VALUE ('pi', 3.1415);
SELECT constant.double_value / 4 FROM constant WHERE constant.id = 'pi';
-- is translated into SELECT 3.1415 / 4
SELECT table1.field1 / constant.double_value
FROM table1, constant
WHERE constant.id = 'pi';
-- is translated into SELECT table1.field1 / 3.1415 FROM table1