假设我有一张契约(Contract)表:
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,还是我必须插入返回,然后在事务中更新?
最佳答案
也许您的表可以跳过尝试存储 document_url
并看起来更像:
id | name | s3_bucket
-----------------------
然后查询:
SELECT name
,'https://' || s3_bucket || '/' || id || '.pdf' AS document_url
FROM contracts
基于查询创建 View 将封装组合,以便那些查询不需要知道如何将其粘贴在一起:
CREATE VIEW contract_documents AS
SELECT name
,'https://' || s3_bucket || '/' || id || '.pdf' AS document_url
FROM contracts
然后在外部:
SELECT name, document_url
FROM contract_documents
关于sql - 重复使用插入的 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45524392/