我正在處理某些訂單的Web應用程序。表上的更新更改另一個表中的字段
的順序被插入與特定date_open和空sent_order_id與
:作爲
CREATE TABLE sent_orders ( id INT NOT NULL AUTO_INCREMENT, code VARCHAR(45) NOT NULL, date_open TIMESTAMP NOT NULL, state VARCHAR(50) NOT NULL, direction VARCHAR(45) NOT NULL, PRIMARY KEY (id)) CREATE TABLE orders ( id INT NOT NULL AUTO_INCREMENT, state_id INT(11) NOT NULL, date_open TIMESTAMP NOT NULL, date_processed TIMESTAMP NULL, date_closed TIMESTAMP NULL, sent_order_id INT(11) NULL, PRIMARY KEY (id) , INDEX fk_orders_3_idx (state_id ASC) , INDEX fk_orders_5_idx (sent_order_id ASC) , CONSTRAINT fk_orders_1 FOREIGN KEY (state_id) REFERENCES order_states (id) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT fk_orders_2 FOREIGN KEY (sent_order_id) REFERENCES sent_orders (id) ON DELETE NO ACTION ON UPDATE NO ACTION)
訂單處理是由在不同時間的兩個步驟我已經定義的兩個表
insert into orders (...,date_open,..) values(...,?,...)
sent_order被插入一個不同的date_open
insert into sent_orders (...,date_open,..) values(...,?,...)
的更新Orders表了添加在sent_orders
update orders set sent_order_id = ? where id = ?
外鍵的問題是,當我運行Orders表更新的訂單。 date_open字段隨當前日期更新。
另一個奇怪的事情是,調試問題,我添加了第二個日期字段「date_open2」 Orders表,然後我跑了大規模的更新爲:
alter table orders add date_open2 TIMESTAMP NOT NULL;
update orders set date_open2 = date_open;
,現在當我運行
select date_open,date_open2,id,sent_order_id from orders
我有什麼是一樣的東西:
date_open date_open2 id sent_order_id
2015-11-17 23:35:14.0 2015-11-17 23:34:27.0 8654 678
凡date_open2是原廠l date_open,但它應該等於date_open字段!這意味着更新查詢得到正確的日期值,但是當我選擇它時,它是錯誤的。
MySQL實例:
- bitnami wampstack-5.4.25-0與MySQL服務器5.5