I am using the following C++ (Visual Studio .Net 2002) code to determine whether or not a given object exists in a table.If it DOES exist, it adds it. <snip> query.Format("SELECT catID FROM Categories WHERE category=\"%s\" AND subcategory=\"%s\"", currentObject->category, currentObject->subcategory); if (!sqlCon.ExecuteQuery(query)) { sqlCon.QueryError(query); delete currentObject; currentObject = NULL; return; } if (sqlCon.res.size() == 0) //then doesn't exist, need to add it { query.Format("INSERT INTO Categories (category, subcategory) VALUES(\"%s\", \"%s\")", currentObject->category, currentObject->subcategory); if (!sqlCon.ExecuteQuery(query)) { sqlCon.QueryError(query); delete currentObject; currentObject = NULL; return; } .... </snip> What I just began getting is the case where the selected results have a size of 0 (indicating that the specified object does not exist), but then when I try to insert that very same item, it gives me a key violation. I just upgraded this program to be using a 4.0.17 server - was previously using 4.0.12 and did not have this problem. Any ideas on what might be wrong? Adam Clauss [EMAIL PROTECTED]