重复使用插入的ID

时间:2017-08-05 17:01:09

标签: sql postgresql insert

说我有一张表合同:

  id  |  name | document_url  
-----------------------------

documentUrl自动生成/上传到S3并具有以下结构:

https://s3-bucket.aws.com/${id}.pdf

我的问题是如何在单个INSERT查询中插入它。

INSERT INTO contracts(name, document_url)
VALUES('bob', ${process.env.S3_BUCKET}.aws.com/????.pdf}

我从NodeJS服务器内部调用此代码,并且存储桶作为每个服务器基础上的数据库外部的环境变量存储。有没有办法获取当前插入的行的id,或者我是否必须插入返回,然后在事务中更新?

1 个答案:

答案 0 :(得分:2)

也许您的表可以跳过尝试存储document_url并且看起来更像:

id  |  name | s3_bucket  
-----------------------

然后查询:

SELECT name
      ,'https://' || s3_bucket  || '/' || id || '.pdf' AS document_url
  FROM contracts

基于查询创建视图将封装组合,以便那些查询不需要知道如何将它们粘贴在一起:

CREATE VIEW contract_documents AS
SELECT name
      ,'https://' || s3_bucket  || '/' || id || '.pdf' AS document_url
  FROM contracts

然后外部:

SELECT name, document_url
  FROM contract_documents