我正在執行插入,并使用子查詢為插入陳述句選擇電子郵件地址,如下所示:
INSERT INTO users (id, email, date) VALUES (
123,
(
SELECT email from list_of_emails WHERE email = '[email protected]'
),
now()
)
users 表non-null對電子郵件地址有限制,因此我試圖捕捉的是可能沒有與子查詢匹配的電子郵件地址的可能性,在這種情況下not-null constraint會發生違規。
關于如何在子查詢期間捕獲此值錯誤并回傳一些錯誤訊息的任何建議,例如“找不到電子郵件地址”
uj5u.com熱心網友回復:
只需使用INSERT ... SELECT ...;表格:
INSERT INTO users (id, email, date)
SELECT DISTINCT 123, email, now()
FROM email
WHERE email = '[email protected]'
;
這樣可以避免在未找到電子郵件行時嘗試插入。希望您沒有重復的電子郵件條目,因為這在原始郵件中也是一個問題。我添加了一個 DISTINCT 以防萬一,因為我不知道您的架構。如果確保電子郵件在電子郵件表中是唯一的,則洗掉 DISTINCT。
uj5u.com熱心網友回復:
您可以使用 WHERE EXISTS。
INSERT INTO users (id, email, date) VALUES (
123,
(
SELECT email from list_of_emails WHERE email = '[email protected]'
),
now()
)
WHERE EXISTS (SELECT email from list_of_emails WHERE email = '[email protected]')
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/483030.html
標籤:sql PostgreSQL
上一篇:如何計算分組的行數?
