我希望在我的表格contacts
中得到这个结果:
|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(user_id, user_contact_id)
必须是唯一的吗?偶尔出现重复是否可以用contact_id
进行区分(这会简单得多)?如何处理由DELETE
和/或UPDATE
引起的user_contact_id
中的间隙,还是只有INSERT
?序列中的间隙是否可以接受?您知道在并发加载下,在serial
列中预计会出现间隙,对吗?这个用例是针对少量还是大量用户的? - Erwin Brandstetter