MySQLのDefaultValueプロパティ(つまりDEFAULT
、列定義の句)を使用して、同じテーブルまたは異なるテーブル内の他の列の値に基づいて計算を実行する方法はありますか?
静的なデフォルト値を任意の列に設定できますが、計算を実行したり、他のテーブルのデータを照会したりできますか?
編集
marks
と他のtotal_marks
列と3番目の列を持つテーブルを考えてみましょうpercentage
。percentage
前の2列から計算されるデフォルト値の設定方法
いいえ。DEFAULT 句の値は定数でなければなりません。(この規則の 1 つの例外は、列CURRENT_TIMESTAMP
の既定値として を使用することです)。TIMESTAMP
別の方法として、TRIGGER を使用して、行が挿入または更新されたときに列の値を設定できます。
たとえば、BEFORE INSERT FOR EACH ROW トリガー内で、他の列に指定された値から計算を実行したり、他のテーブルからデータをクエリしたりできます。
編集
質問の編集で示されている例については、トリガー定義の開始点の例を示します。
CREATE TRIGGER mytable_bi
BEFORE INSERT ON mytable
FOR EACH ROW
BEGIN
SET NEW.percentage = (100.0 * NEW.marks) / NULLIF(NEW.total_marks,0);
END