Как обрабатывать код ошибки к базе?
db.Exec возвращает интерфейс error, вам нужно его попробовать привести к *pq.Error, чтобы обработать._, err := db.Exec(insert)
if err != nil {
    if pgError,ok := err.(*pq.Error); ok {
        // Достаём код из переменной pgError
    } else {
        // Пришедший тип не является *pg.Error
    }
}
И самое главное!
НИКОГДА не используйте Sprintf для формирования запроса, вы открываете SQL Injection в вашем коде. Используйте возможность подстановки, которую даёт вам пакет database/sqldb.Query("select id, name from users where id = ?", 1) // Вот так, например
Вам нужен type assertion - приведение к типу.
if pqError, ok := err.(*pq.Error); ok {
  ...
}