Re: error 23000 is not treated in psqlODBC
От | Hiroshi Inoue |
---|---|
Тема | Re: error 23000 is not treated in psqlODBC |
Дата | |
Msg-id | 3E4843ED.27E84673@tpf.co.jp обсуждение исходный текст |
Ответ на | error 23000 is not treated in psqlODBC ("Support" <support@insyde.com.br>) |
Список | pgsql-odbc |
Support wrote: > > "For example. you could have MS SQL Server and PostgreSQL servers > that have exactly the same data. Using ODBC, your Windows application > would make exactly the same calls and the back-end data source would > look the same (to the Windows application)." - PostgreSQL 7.2 > Documentation - chap. 7. ODBC Interface > > This should happen when I use my system. It works with MySQL and MS SQL > Server, so it would work with PostgreSQL also, without any change. The > problem I found is that psqlODBC do not validate all the error codes > specified by ODBC. The error I related should return "23000/S1010" > acording to ODBC. > > Seeking psqlODBC sources, I found some of this informations/errors were > treated at environ.c, under a 'case' where most of the psqlODBC errors > were treated. Following this logic, this is where I should insert > my code: > > case ER_DUP_KEY: > pg_sqlstate_set(env, szSqlState, "23000", "S1010"); > // key already exists > break; > > This would return the error code I need to treat qhe the user tries to > insert a duplicated key. Unfortunately PostgreSQL doesn't support error code at backend side and it's very hard for clients to detect error details such as *key already exists*. There may be a way where we analyze the error message but I won't do it. regards, Hiroshi Inoue http://www.geocities.jp/inocchichichi/psqlodbc/
В списке pgsql-odbc по дате отправления: