sql >> Databasteknik >  >> RDS >> Sqlserver

Hur kan jag veta om ett SQL-undantag kastades på grund av brott mot främmande nyckel?

Anta att du använder SQL Server.

Använda webbarkivet - https://web.archive.org/web/20190120182351/https://blogs.msdn.microsoft.com/tomholl/2007/08/01/mapping-sql-server-errors-to-net -exceptions-the-fun-way/

try
{
    # SQL Stuff
}
catch (SqlException ex)
{
    if (ex.Errors.Count > 0) // Assume the interesting stuff is in the first error
    {
        switch (ex.Errors[0].Number)
        {
            case 547: // Foreign Key violation
                throw new InvalidOperationException("Some helpful description", ex);
                break;
            case 2601: // Primary key violation
                throw new DuplicateRecordException("Some other helpful description", ex);
                break;
            default:
                throw new DataAccessException(ex);
        }
    }

}

Fall 547 är din man.

UPPDATERA Ovanstående är exempelkod och bör inte användas. Följ länken för att förklara varför.



  1. MySQL ISNULL() Förklarat

  2. Välj mellan agentbaserad och agentlös övervakning

  3. PostgreSQL bearbetar namn i Windows

  4. Reguljärt uttryck i PostgreSQL LIKE-sats