These are chat archives for CodeTengu/headquarters

19th
Nov 2015
Tzu-ping Chung
@uranusjr
Nov 19 2015 05:30
This message was deleted
例如如果你有一個 varchar 欄位想要「unique,除非空白」,可以做一個 calculated column,然後該 column 的內容是 varchar 欄位內容,前面加上一個 0,例如如果文字是「abc」,多出來的欄位內容就是 「0abc」。但如果 varchar 欄位是空白,calculated column 的內容就改成是 primary key(假設是 unsigned int auto increment 從 1 開始)。把 unique 加在這個 calculated column 上。這樣每個空白值就能都滿足 unique(因為會被計算成 primary key,本來就 unique),而非空白值也各自 unique(而且因為前面是 0,絕對不會和空白值的計算結果重複)
好像有點複雜 XD
WanCW
@wancw
Nov 19 2015 05:49
real data is not null -> col. value = "0" + real data
is null -> col. value = primary key
這樣的意思?
Tzu-ping Chung
@uranusjr
Nov 19 2015 06:27
字串用空白與否來分比較好,不過大致上是這樣沒錯
Vinta
@vinta
Nov 19 2015 06:50
@uranusjr 哇,還有這種辦法啊,感謝大大解惑!
Vinta
@vinta
Nov 19 2015 06:57
This message was deleted
Vinta
@vinta
Nov 19 2015 07:02
@uranusjr @wancw 原本想要問為什麼要加 "0"
看到最後一行才發現是要避免跟空白值的 primary key 重複
Vinta
@vinta
Nov 19 2015 09:15
@uranusjr 不過如果 primary key 是 auto increment,在 insert 的時候不是不知道 id 會是多少嗎?要怎麼寫到那個 calculated column?