Check if constraint exists before trying to delete

This commit is contained in:
Tulir Asokan 2020-04-02 21:37:51 +03:00
parent 9b01166f0c
commit 6a42de73d1

View file

@ -10,9 +10,14 @@ func init() {
// SQLite doesn't support constraint updates, but it isn't that careful with constraints anyway. // SQLite doesn't support constraint updates, but it isn't that careful with constraints anyway.
return nil return nil
} }
_, err := tx.Exec("ALTER TABLE message DROP CONSTRAINT message_chat_jid_fkey") res, _ := tx.Query(`SELECT EXISTS(SELECT constraint_name FROM information_schema.table_constraints
WHERE table_name='message' AND constraint_name='message_chat_jid_fkey');`)
var exists bool
_ = res.Scan(&exists)
if exists {
_, err := tx.Exec("ALTER TABLE message DROP CONSTRAINT IF EXISTS message_chat_jid_fkey")
if err != nil { if err != nil {
return nil return err
} }
_, err = tx.Exec(`ALTER TABLE message ADD CONSTRAINT message_chat_jid_fkey _, err = tx.Exec(`ALTER TABLE message ADD CONSTRAINT message_chat_jid_fkey
FOREIGN KEY (chat_jid, chat_receiver) REFERENCES portal(jid, receiver) FOREIGN KEY (chat_jid, chat_receiver) REFERENCES portal(jid, receiver)
@ -20,6 +25,7 @@ func init() {
if err != nil { if err != nil {
return err return err
} }
}
return nil return nil
}} }}
} }