我正在尝试在 Firebird (2.5) 中创建一个列,它:
- 不能为 NULL
- 必须正好是 16 个字符
- 只能包含数字和小写字母
a
-f
我可以解决第一个和第二个限制。
ALTER TABLE TEST_TABLE ADD NEW_COLUMN CHAR(16) NOT NULL CHECK (CHAR_LENGTH(TRIM(VALUE)) = 16)
我不想对第三个要求使用触发器,而是使用检查约束 - 有什么方法可以做到这一点吗?
最佳答案
你可以使用 SQL regexes ?
CHECK (value SIMILAR TO '[a-f0-9]{16}')
这些是在 Firebird 2.5 中引入的,并且为了方便您的目的,它们必须匹配整个字符串。 (也就是说,它们“锚定”在搜索空间的两端。)
关于sql - 检查仅允许某些字符的约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37795826/