我有一個類似於C#的POS系統,並且很長一段時間它不會出現任何問題(它只是一個POS)。但在這幾天中,有4個POS使用該系統,並且連接到同一個數據庫,並且一個POS的所有銷售都轉到同一個審計(表),其中所有其他銷售都去了。 因此,在這個系統中,這是程序由於延遲,避免SQL服務器中的重複
- 函數來獲得最後的票號(與簡單的SELECT)
- 添加1至數(下一tickt無)。
- 生成一個將此票號(包含終端,日期和員工代碼)注入算法的ID代碼
- 將銷售記錄插入數據庫,包含所有必要信息(日期,客戶端,員工,IDCode等) )(用簡單的INSERT INTO)
但是有4個POS我意識到有些銷售有相同的票號,幸運的是票號代碼是不一樣的,因爲終端和僱員是不同的,但是如何可以避免這一點?
編輯1: 每個POS系統具有雙重功能,在一個模式中,POS銷售是集中式的,而在這種模式下每個POS產生連續的門票(如他們所有,其中一個POS),在其他模式每個POS有自己的票證分號,因此我不能使用這個身份。
你最好展示你的代碼。 – dario 2015-01-15 18:22:02
數據庫具有「身份」列,可在單個原子操作中爲您生成下一個數字。不要在多線程環境中自己生成它,因爲您無法保證兩個操作不會同時發生。讓數據庫生成標識符。 – David 2015-01-15 18:22:59
不要以編程方式創建記錄標識符 - 讓數據庫處理此問題(如David所述),並使用事務處理關鍵操作。 – Filburt 2015-01-15 18:23:46