首页 > 解决方案 > ON CONSTRAINT ON CONFLICT ON CONSTRAINT 未检测到 postgresql 中的唯一冲突

问题描述

我有这行代码

        db.execute("""INSERT INTO warelo.users (email, username, hash, wg_puid) VALUES(%s, %s, %s, %s)
    ON CONFLICT ON CONSTRAINT users_email_username_user_id_key DO NOTHING
    RETURNING (user_id)""",
    (request.form.get("email"), request.form.get("username"), hash, wg_puid))
    result = db.fetchall()

它应该做的是注册一个用户,并确保用户名和电子邮件是唯一的,如果用户的用户名、电子邮件或 user_id 已经存在,则什么都不做。代码本身运行,但我仍在插入重复的电子邮件和用户名。似乎 ON CONFLICT ON CONSTRAINT 永远不会触发,即使它应该触发。我的代码有什么问题?

我在这里的独特限制:

标签: sqlpostgresqlupsertsql-returning

解决方案


推荐阅读