sql >> Databáze >  >> RDS >> Sqlserver

Kontrola omezení:TRY/CATCH vs Exists()

Viděl jsem ten článek, ale všimněte si, že pro nízkou poruchovost bych dal přednost vzoru "JFDI". Už jsem to dříve používal na vysokoobjemových systémech (40 000 řádků za sekundu).

V Aaronově kódu stále můžete získat duplikát při prvním testování při vysoké zátěži a spoustě zápisů. (vysvětleno zde na dba.se ) To je důležité:vaše duplikáty se stále vyskytují, jen méně často. Stále potřebujete zpracování výjimek a vědět, kdy ignorovat duplicitní chybu (2627)

Edit:stručně vysvětleno Remusem v jiné odpovědi

Měl bych však samostatný TRY/CATCH na testování pouze za duplicitní chybu

BEGIN TRY

-- stuff

  BEGIN TRY
     INSERT etc
  END TRY
  BEGIN CATCH
      IF ERROR_NUMBER() <> 2627
        RAISERROR etc
  END CATCH

--more stuff

BEGIN CATCH
    RAISERROR etc
END CATCH


  1. Oracle čte názvy sloupců z příkazu select

  2. Jak vytvořit vlastní sloupec s automatickým přírůstkem znaků

  3. Jak vytvořit složený cizí klíč v SQL Server (příklad T-SQL)

  4. Tabulka MySQL se sloupcem varchar jako cizím klíčem