私はスイングアプリケーションに取り組んでおり、テスト中にデータの更新に関する問題に直面しました。
私は「用量」と呼ばれるテーブルを持っています:
create table Dose (id_dose int auto_increment primary key ,
id_cmd varchar(50),
t_inj TimeStamp,
a_inj int,
id_e_d int,
id_dose_inc varchar(50),
poid int ,
Constraint fkk_et_doses foreign key (id_e_d) references Etat_dose (id_e_d),
Constraint fkk_et_cmds foreign key (id_cmd) references Commande (id_cmd)ON DELETE CASCADE);
id_e_dフィールドは etat_dose テーブルの id_e_d を参照します。
create table Etat_dose (id_e_d int primary key,
libele varchar(50));
データを挿入すると、すべてが正常に機能するため、クエリを使用します。
Methodes.UpdateData("insert into Dose(id_cmd,t_inj,a_inj,id_e_d,id_dose_inc,poid) values (?,?,?,?,?,?)", dose, 6);
しかし、id_e_dを更新すると、Dose テーブルのT_injがシステム日付に自動的に変更されます。例えば :
挿入する前に:
insert into doses values(1,'CMFDG121031-1',' 2012-10-02 10:30:55',400,1,'CMFDG121031-1-1',30)
私がそれを編集すると、次のようになります:
mysql> select * from dose where id_dose=1;
+---------+---------------+---------------------+-------+--------+-----------------+------+
| id_dose | id_cmd | t_inj | a_inj | id_e_d | id_dose_inc | poid
+---------+---------------+---------------------+-------+--------+-----------------+------+
| 1 | CMFDG121031-1 | 2012-10-02 10:30:55 | 400 | 1 | CMFDG121031-1-1 | 30 |
+---------+---------------+---------------------+-------+--------+-------------------------
アップデートで私は実行します:
update dose set id_e_d=2 where id_dose=1
私は得る:
mysql> select * from dose where id_dose=1;
+---------+---------------+---------------------+-------+--------+-----------------+------+
| id_dose | id_cmd | t_inj | a_inj | id_e_d | id_dose_inc | poid
+---------+---------------+---------------------+-------+--------+-----------------+------+
| 1 | CMFDG121031-1 | 2012-10-08 16:15:11 | 400 | 2 | CMFDG121031-1-1 | 30 |
+---------+---------------+---------------------+-------+--------+-------------------------
ご覧のとおり、T_injの値は自動的に変更されています。このエラーを追跡するにはどうすればよいですか。