Вставьте одну строку в базу данных, где возможно несколько строк - PullRequest
0 голосов
/ 12 июля 2011

Я использую PostgreSQL и имею следующую таблицу:

Название таблицы: ip4_bank

Поле 1: ip4_address

Поле 2: nic_id

По умолчанию эта таблица будет содержать список адресов IPv4 с полем 2, равным нулю. Я хочу выполнить запрос, чтобы назначить nic_id следующему доступному IP4-адресу.

На данный момент у меня есть запрос:

INSERT INTO ip4_bank (nic_id) VALUES ('1') WHERE nic_id = null 

но это заполнит таблицу с nic_id из '1', где все ранее были установлены в ноль.

У кого-нибудь есть идеи, как просто вставить значение nic_id в одну строку?

1 Ответ

3 голосов
/ 12 июля 2011

Предполагая, что «следующий доступный» является самым низким IP, попробуйте это:

UPDATE ip4_bank SET nic_id = 1
WHERE nic_id is null
AND ip4_address = (SELECT MIN(ip4_address)
                   FROM ip4_bank
                   WHERE nic_id is null)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...