Как я могу осуществить ограничение, только если столбец не является пустым в Postgresql?

Вам необходимо использовать заголовок авторизации:

axios.defaults.headers.common['Authorization'] = `Bearer ${access_token}` 

и удалить заголовки из тела запроса;

8
задан GEOCHET 23 February 2009 в 22:51
поделиться

5 ответов

Ummm. Ограничения на уникальность данных не предотвращают несколько Нулевых значений.

CREATE TABLE mytable (
    table_identifier_a   INTEGER    NULL,
    table_identifier_b   INTEGER    NOT NULL,
    table_value1         INTEGER    NOT NULL,

    UNIQUE(table_identifier_a, table_identifier_b)
);

Обратите внимание, что мы можем вставить muliple, АННУЛИРУЕТ в него, даже когда identifier_b соответствует:

test=# INSERT INTO mytable values(NULL, 1, 2);
INSERT 0 1
test=# INSERT INTO mytable values(NULL, 1, 2);
INSERT 0 1
test=# select * from mytable;
 table_identifier_a | table_identifier_b | table_value1 
--------------------+--------------------+--------------
                    |                  1 |            2
                    |                  1 |            2
(2 rows)

Но мы не можем создать дубликат (a, b) пары:

test=# update mytable set table_identifier_a = 3;
ERROR:  duplicate key value violates unique constraint "mytable_table_identifier_a_key"

Конечно, у Вас действительно есть проблема: Ваша таблица не имеет никакого первичного ключа. У Вас, вероятно, есть проблема модели данных. Но Вы не предоставили достаточно подробной информации для фиксации этого.

7
ответ дан 5 December 2019 в 19:03
поделиться

Если выполнимо завершить всю операцию в рамках одной транзакции, возможно изменить время, которое пост-ГРЭС оценивает ограничение, т.е.:

START;
SET CONSTRAINTS <...> DEFERRED;
<SOME INSERT/UPDATE/DELETE>
COMMIT;

В этом случае ограничение оценено в фиксации. См.: пост-ГРЭС 7,4 Doc - ограничения Набора или Пост-ГРЭС 8,3 Doc

1
ответ дан 5 December 2019 в 19:03
поделиться

На самом деле я, вероятно, выломал бы это в Две таблицы. Вы моделируете два различных видов вещей. Первый является начальной версией, которая только неравнодушна, и второе является всем этим. После того как информация должна была принести первый вид вещи к второму, переместить строку от одной таблицы до другого.

1
ответ дан 5 December 2019 в 19:03
поделиться

Вы могли обработать это использование триггера вместо ограничения.

0
ответ дан 5 December 2019 в 19:03
поделиться

На вашем месте я разделил таблицу на две таблицы и возможно создаю представление, которое комбинирует их по мере необходимости.

0
ответ дан 5 December 2019 в 19:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: