Я хочу, чтобы получить этот результат в моей таблице contacts
:В зависимости SERIAL столбец в PostgreSQL
|contact_id | user_id | user_contact_id |
+-----------+------------------+----------------------+
| 1 | 1 | 1 |
+-----------+------------------+----------------------+
| 2 | 1 | 2 |
+-----------+------------------+----------------------+
| 3 | 1 | 3 |
+-----------+------------------+----------------------+
| 4 | 2 | 1 |
+-----------+------------------+----------------------+
| 5 | 2 | 2 |
+-----------+------------------+----------------------+
| 6 | 2 | 3 |
+-----------+------------------+----------------------+
| 7 | 3 | 1 |
+-----------+------------------+----------------------+
Я собираюсь вставить только user_id
.
INSERT INTO contacts (user_id) VALUES ($user_id);
contact_id
будет автоинкрементным, потому что это serial
. Я хочу, чтобы user_contact_id
также автоматически заселялся самой БД, поэтому он стабилен на 100% при одновременной записи.
ли значение 'user_contact_id' всегда считая 1-3? – Scopey
Последующие действия в связи с этим предыдущим связанным вопросом. http://stackoverflow.com/questions/30469032/postgresql-inner-queries-with-prepared-statements –
Это ** не тривиально ** из-за проблем с параллелизмом. Вы должны быть очень точными. Просьба уточнить * в вашем вопросе *: Ваша версия Postgres? Ли '(user_id, user_contact_id)' должен быть уникальным или случайным образом обходится в порядке, который можно отличить с помощью 'contact_id'. (Сделал бы это * намного проще). Как бороться с пробелами в 'user_contact_id' из-за' DELETE' и/или 'UPDATE', или это' INSERT'-only? Имеются ли пробелы в последовательности? Вы знаете, что пробелы * должны быть ожидаемыми * в столбцах 'serial' при одновременной нагрузке, правильно? И этот прецедент для * нескольких * или * многих пользователей? –