2016-06-13 15 views
2

Ich versuche, eine Spalte in Firebird (2.5) in einer Art und Weise zu schaffen, dass es:überprüfen contraint so dass nur bestimmte Zeichen

  • nicht NULL sein kann
  • müssen genau 16 Zeichen lang sein
  • können nur Zahlen und Kleinbuchstaben enthalten a - f

Ich konnte die erste und zweite Einschränkung lösen.

Ich würde es vorziehen, keine Trigger für die dritte Anforderung zu verwenden, sondern eine Check-Constraint - gibt es eine Möglichkeit, dies zu tun?

Antwort

2

Können Sie SQL regexes verwenden?

CHECK (value SIMILAR TO '[a-f0-9]{16}') 

Diese wurden in Firebird 2.5 eingeführt und müssen, passend zu Ihrem Zweck, mit der gesamten Zeichenfolge übereinstimmen. (Das heißt, sie sind an beiden Enden des Suchraums "verankert".)

+0

Funktioniert gut, ich musste nur "a-z" zu "a-f" ändern. Ich war mir nicht bewusst, dass es bereits in 2.5 vorgestellt wurde, immer als neues Firebird 3-Feature. –

Verwandte Themen