32

フィールドのデフォルト値をMySQLの他の列に設定するには?

仮想フィールドを使用してOracleで実行しましたが、MySQLで実行する方法がわかりません。

これは私のテーブルです:

CREATE TABLE TSM_TRANSACTION_TBL
(
  TRANS_ID     INT primary key auto_increment,
  LOCATION_ID  INT,
  TRANS_DATE   DATE,
  RESOURCE_ID  INT,
  TS_ID        INT,
  MAX_VALUE    INT,
  BOOKED_UNITS INT default 0,
  REMAINING    INT default MAX_VALUE - BOOKED_UNITS,
  BOOKED       INT not null,
  USER_ID      INT,
  TRANS_TIME   TIMESTAMP
);
4

3 に答える 3

26
于 2013-03-13T11:53:11.550 に答える
18

「NEW」は AFTER 挿入トリガーには使用できません。BEFORE挿入トリガーで「フィールド更新」を行う必要があります。そう、

CREATE TRIGGER foo BEFORE INSERT ON TSM_TRANSACTION_TBL FOR EACH ROW
    IF NEW.REMAINING IS NULL THEN
        SET NEW.REMAINING := NEW.MAX_VALUE - NEW.BOOKED_UNITS;
    END IF;;
于 2013-08-31T11:40:32.157 に答える