Ограничение CHECK для проверки совпадения подстроки с другим столбцом (PostgreSQL) - PullRequest
0 голосов
/ 23 сентября 2018

Я хочу создать ограничение CHECK, чтобы проверить, что первый и второй элементы поля штрих-кода соответствуют данным, предоставленным в полях project_code и center_code, например.

+----------------+--------------+-------------+
|    barcode     | project_code | center_code |
+----------------+--------------+-------------+
| PP22-NY-1BCDE6 | PP22         | NY          |
+----------------+--------------+-------------+

Я пытался использовать

barcode ~ ^[A-Z0-9]{4}-[A-Z0-9]{2}-[A-Z0-9]{6}$

Что работает до некоторой степени, однако штрих-коды, которые не точно совпадают с кодом_проекта и кодом_центра, все равно будут совпадать.Как я могу включить другие значения полей в ограничение CHECK в PostgreSQL, чтобы сделать это?

1 Ответ

0 голосов
/ 23 сентября 2018

Вы должны сделать:

constraint chk_t_barcode check (barcode like project_code || '-' || center_code || '-%')

Если вы хотите быть уверены, что последние шесть символов являются буквенно-цифровыми:

constraint chk_t_barcode check (barcode ~ project_code || '-' || center_code || '-[a-zA-Z0-9]{6}')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...