|
89 | 89 | where last_value is not null /*null means access denied*/ and used_percent > 33 |
90 | 90 | order by used_percent desc; |
91 | 91 | ``` |
| 92 | +1. Ограничение с условиями между разными колонками на уровне строки таблицы смотрится понятнее. Пример: |
| 93 | + ```sql |
| 94 | + CREATE TABLE test.test1 |
| 95 | + ( |
| 96 | + day_from int check(day_from >= 0 and coalesce(day_from, day_to) is not null), |
| 97 | + day_to int check(day_to >= 0 AND day_from <= day_to) |
| 98 | + ); |
| 99 | + --vs |
| 100 | + CREATE TABLE test.test2 |
| 101 | + ( |
| 102 | + day_from int check(day_from >= 0), |
| 103 | + day_to int check(day_to >= 0), --тут запятая! |
| 104 | + check (coalesce(day_from, day_to) is not null and day_from <= day_to) |
| 105 | + ); |
| 106 | + -- TEST |
| 107 | + insert into test.test1 values (null, null); --error |
| 108 | + insert into test.test1 values (1, null); --ok |
| 109 | + insert into test.test1 values (null, 1); --ok |
| 110 | + insert into test.test1 values (1, 2); --ok |
| 111 | + insert into test.test1 values (2, 1); --error |
| 112 | + ``` |
92 | 113 |
|
93 | 114 | # TODO валидация потенциальных ошибок в SQL запросах |
94 | 115 |
|
|
0 commit comments