【发布时间】:2013-03-31 15:16:23
【问题描述】:
给定一个表 cc_playlist 有 4 行/记录,其中 id_key 是自动递增的主键,track_id、track_position 和 playlist_id:
+--------+----------+----------------+-------------+
| id_key | track_id | track_position | playlist_id |
+--------+----------+----------------+-------------+
| 23 | 3 | 0 | 1 |
| 223 | 23 | 1 | 1 |
| 343 | 45 | 2 | 1 |
| 344 | 32 | 3 | 1 |
+--------+----------+----------------+-------------+
问题:
当我想添加新记录时,例如track_id = 777,track_position=2,playlist_id =1,我希望它放置新记录并将其余记录向下推,只要它在同一playlist_id中即可。
注意:我在 php 中执行此操作,如果在 Postgres 中无法执行。
【问题讨论】:
-
您能否澄清一下您所说的“将其余记录下推”是什么意思?其他记录似乎没有任何变化。
-
但这有什么意义呢?您不能在查询中只使用
ORDER BY track_position吗?我问是因为自动增量的 AFAIK 很难或不可能做到。 -
啊哈!在此处查看我的获奖答案:stackoverflow.com/a/14092775/905902
-
有趣的解决方案,但是我无法向数据库添加新字段。
-
我的直觉是,如果每行没有额外的状态变量,问题就无法解决。请证明我错了。
标签: php sql postgresql sql-order-by