【发布时间】:2015-08-08 17:54:31
【问题描述】:
我有一张表来存储联系人。
我想获取添加 user_id 为 {some number} 的列的最大值,并将其设置为当前插入记录的相同列值。
我正在使用准备好的语句:
pg_prepare($db, "add", 'INSERT INTO '.CONTACTS.' (c_user_serial,c_name,c_company,c_email) VALUES ($1, $2, $3, $4)');
$insert_co = pg_execute($db, "add", array({(MAX OF c_user_serial where c_user_id = 1234) + 1 increment },$name,$company,$email));
c_user_id 是添加此联系人的用户的 ID,还有另一列作为索引 (id),这是一个常见的 serial 列,每行递增,c_user_serial 是序列号每个用户递增。假设一位用户添加了一位联系人,所以它是1。在其他用户添加了许多联系人之后,当该用户添加他的第二个联系人时,我希望此列存储 2,因此是一种自动递增类型的列,但应按用户递增。
不确定如何在此处使用内部查询来获取列的最大值并使用增量值进行当前插入。
【问题讨论】:
-
我试图写一个答案,但后来我注意到:
(MAX OF c_user_id where c_user_id = 1234)没有意义 - 如果您知道 c_user_id 值是 1234,那么 MAX 肯定是 1234。所以有没有必要使用 MAX 功能。问这个问题时有什么混淆吗? -
我试图解决你的问题,但不清楚你想检索什么样的数字,就像 Turophile 评论的那样。您还需要定义如果子查询将找到 NULL 或没有行时要执行的操作。
标签: php sql postgresql database-design auto-increment