Вам необходимо использовать заголовок авторизации:
axios.defaults.headers.common['Authorization'] = `Bearer ${access_token}`
и удалить заголовки из тела запроса;
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"
Конечно, у Вас действительно есть проблема: Ваша таблица не имеет никакого первичного ключа. У Вас, вероятно, есть проблема модели данных. Но Вы не предоставили достаточно подробной информации для фиксации этого.
Если выполнимо завершить всю операцию в рамках одной транзакции, возможно изменить время, которое пост-ГРЭС оценивает ограничение, т.е.:
START;
SET CONSTRAINTS <...> DEFERRED;
<SOME INSERT/UPDATE/DELETE>
COMMIT;
В этом случае ограничение оценено в фиксации. См.: пост-ГРЭС 7,4 Doc - ограничения Набора или Пост-ГРЭС 8,3 Doc
На самом деле я, вероятно, выломал бы это в Две таблицы. Вы моделируете два различных видов вещей. Первый является начальной версией, которая только неравнодушна, и второе является всем этим. После того как информация должна была принести первый вид вещи к второму, переместить строку от одной таблицы до другого.
Вы могли обработать это использование триггера вместо ограничения.
На вашем месте я разделил таблицу на две таблицы и возможно создаю представление, которое комбинирует их по мере необходимости.