2

MySQLのDefaultValueプロパティ(つまりDEFAULT、列定義の句)を使用して、同じテーブルまたは異なるテーブル内の他の列の値に基づいて計算を実行する方法はありますか?

静的なデフォルト値を任意の列に設定できますが、計算を実行したり、他のテーブルのデータを照会したりできますか?

編集

marksと他のtotal_marks列と3番目の列を持つテーブルを考えてみましょうpercentagepercentage前の2列から計算されるデフォルト値の設定方法

4

2 に答える 2

9

いいえ。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
于 2012-08-28T16:24:16.160 に答える