我有一個ajax實時表編輯來更改我當前產品的價格。我想要做的是在更改它之前插入價格,然後插入更新後的價格。原因是因爲我想顯示更新價格的變化。例如:當前價格爲$ 54.00,我將其更改爲$ 57.00。我需要保持全天價格變化的日誌,並顯示價格變化3.00美元。我將如何去插入舊價格,同時更新的價格也插入。謝謝。Mysql插入當前結果,然後插入新結果
0
A
回答
1
我建議你讓你喜歡這個
table price
-----------
id unsigned integer autoincrement primary key
article_id integer /*link to articletable*/
valid_from date
valid_until date
amount decimal(10,2) /*always use decimal for money*/
價格表,則可以使用以下4個查詢,插入新的價格。
/*hide changes from the rest of the world until we are done*/
START TRANSACTION
/*invalidate the latest existing price in the price table*/
UPDATE price
SET valid_until = DATESUB(CURDATE(),INTERVAL 1 DAY)
WHERE article_id = '100' ORDER BY valid_until DESC LIMIT 1
/*the order by selects the latest item, the limit does only 1 update*/
/*insert the new price*/
INSERT INTO PRICE (article_id, valid_from, valid_until, amount)
VALUES ('100', CURDATE(), DATEADD(CURDATE(),INTERVAL 100 YEAR), '99.95')
/*show changes to the rest of the world*/
COMMIT
您需要交易,否則您將面臨價格表不同步的風險。在價格表上將表格類型設置爲InnoDB
。 你的其他表可以是MyISAM
,只要確保price
表是InnoDB
。
現在,您可以通過選擇價格:
SELECT article.name
,price.amount as price_per_item
,purchase.qty as number_of_items
,price.amount * purchase.qty as amount
FROM purchase
INNER JOIN article ON (article.id = purchase.article_id)
INNER JOIN price ON (price.article_id = purchase.article_id)
AND (purchase.transactiondate BETWEEN price.valid_from and price.valid_until)
WHERE purchase.id = '458'
0
你可以爲兩者保持不同的領域。像old_value和new_value一樣。在一天結束時,您可以計算出數值並打印出差異。
相關問題
- 1. 插入結果
- 2. 插入結果
- 3. MySQL插入選擇結果
- 4. 如果結果存在然後更新並不插入?
- 5. 插入新記錄exsiting結果後
- 6. 插入到mysql結果重複的鍵
- 7. 插入PHP的LDAP結果到MySQL
- 8. 將DOMXpath的結果插入到MySQL中
- 9. MYSQL:從SELECT結果中插入多個結果到表中
- 10. 結果插入到表
- 11. 從mysql_query插入結果
- 12. 插入結果循環
- 13. SQL插入沒有結果
- 14. 插入字符串後4個結果
- 15. 結果後插入多個文檔
- 16. 在新文件中插入結果
- 17. SQL插入/更新表結果
- 18. SQL加入然後結合結果列
- 19. 我得到一個,之後MySQL後,我的結果插入
- 20. 在QTextDocument中插入一個pdf文件,然後打印結果
- 21. 然後將結果插入Python的csv中
- 22. 插入結果放入標題
- 23. 如果爲true,則選擇mysql然後更新,否則插入
- 24. 檢查結果從選擇查詢然後與當前值比較,如果可用,那麼不應該插入
- 25. 結合表,插入,然後選擇
- 26. 如果錯誤,然後插入
- 27. 如果選擇然後插入SQL
- 28. MySQL插入然後更新表數據
- 29. 插入錨如果行當前日期
- 30. 過濾表格,然後加入結果
只是做一個表,並插入一個新的記錄初始化每當有一個變化,並使用外鍵來跟蹤價格紀錄id..i希望能給你是一個想法,也有兩列一更新和一箇舊 – 2011-05-26 15:50:45
爲什麼你不只是在數據庫中保持2價格而不是一個?否則,你可以在數據庫中添加一個新的「delta」字段嗎? – gurghet 2011-05-26 15:51:03