2016-09-16 50 views
0

對於練習,我需要爲遵守此約束條件的表編寫代碼:
字段ID必須完全爲10個字符,始終以'ID_'開始並以'000'結尾。
我想是這樣的:如何施加固定長度的字段

create table xyz (id char(10) primary key, check (id like 'ID\_%000')) 

但正如我所見過的ID可以少於10個字符。 有沒有一種方法可以對領域施加精確的長度?或者,也許,我需要使用觸發器之類的東西?在那種情況下,如何? 謝謝。

+0

10個字符的不同?當你創建一個char類型的字段(而不是varchar)時,如果你放3個字符串,MySql用初始空格填充以達到定義的維數 –

+0

mysql是否支持檢查約束? – TheGameiswar

+0

是的,我知道。 我認爲練習會問這樣的問題:如果我嘗試插入ID_abc000(少於10個字符)或ID_abcdefctfga000(超過10個字符)的ID,則不允許。 – JamieITGirl

回答

1

您可以使用4個下劃線,如「喜歡」通配符(這就是爲什麼你必須反斜線第一個下劃線)的空間

create table xyz (id char(10) primary key, check (id like 'ID\_____000')) 
+0

是的,它可以是一個解決方案。但是如果我必須通過觸發器或程序或類似的東西來做同樣的事情呢?謝謝。 – JamieITGirl

+0

google'mysql trigger before insert validate input':http://cvuorinen.net/2013/05/validating-data-with-triggers-in-mysql/ – verhie