说我有一张表合同:
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,或者我是否必须插入返回,然后在事务中更新?
答案 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