各位大大好,承接上一個問題,我思考了以下事情
上一個問題是,MySQL的SQL mode是否要保留no zero in data/no zero date,這兩個選項保留起來的作用是甚麼?
https://ithelp.ithome.com.tw/questions/10202144
經過此次的事件後,原本打算使用STRICT_TRANS_TABLES當成global sql_mode
但想到其實在insert資料的時候,我並沒有辦法確定每一次的資料都會是很規律的符合我的table設定
若資料筆數一多的時候,使用嚴格模式幾乎就可以預見會有一定比例的資料筆數遺失
請問各位前輩,在這樣的狀況下,各位會怎麼思考/規劃資料庫?
一般使用嚴格模式的sql模式下。
就得搭配嚴格模式的程式語法處理。
所有的欄位處理、參數都要事先宣告好類型。不得一個參數可以字串又可以數值的情況。
只要程式規劃有做好。
自然就不用擔心嚴格模式的sql。
ps:我sql也是用嚴格模式。
我家工程師對我的要求很感冒。
但這就是我要逼他們程式得要宣告好寫法。
我在替一個客戶寫轉檔程式時發現,某國內軟體公司就很偷懶,所有的欄位都只用文字欄位,因此,出現了【05/32】這種日期。
我請公司去電該軟體公司要求做好防呆措施,軟體公司表示這是使用者的問題,明知沒有05/32,怎麼可以輸入05/32呢?若要防呆,還要加錢。
當然,也不止日期不防呆,幾乎任何欄位都不防呆,比如【發票號碼】可以有9個字的,也可以有11個字,民國2385年出生也可以。
從此以後,我對該軟體公司,一點敬意也沒有。
這是事實。軟體的使用度情況依價格不同處理。
不能怪軟體公司不做防呆。
to 浩瀚星空
就我對上面的理解,應該是會發生下面的情況:
在使用嚴格模式下,做大筆資料輸入時,就會設計檢測或是防呆以防資料輸入有誤,或是先使用可以看資料的工具(像是openrefine)
可以這麼理解嗎?
不能怪軟體公司不做防呆
這我就不認同了...
sql明明就有date,你偏偏要用str,難用就算了,還不防呆。
這種軟體公司早早拒絕往來比較好。
資料規劃跟防呆是扯不上關係的。
但有些情況下又非得要用str。
主要是看規劃設計。
而且有時做防呆,還會被客戶給「靠xx」