sql >> Database >  >> RDS >> Sqlserver

Kijk uit voor een tabel met nieuwe records in de sql-database

Dit zijn mijn voorstellen:

  1. Als u dubbele tabellen aan de database kunt toevoegen, is hier een oplossing. Je hebt je tafel1 en tabel2 (Kopie van tabel1 ). Wanneer u nieuwe records invoegt in tabel1 , kunt u ze vergelijken met bestaande records in uw tabel2 en zo nieuwe records vinden. Na het vergelijken moet u alle nieuwe records toevoegen aan tabel2 . Dit is een soort synchronisatie. Dit kan worden gedaan via een opgeslagen procedure of programmatisch.

  2. Je hebt geen andere tafels nodig. U kunt al uw gegevens opslaan in uw app-cache en na enige tijd (bijvoorbeeld 5 seconden) controleren of er nieuwe gebeurtenissen zijn die niet in uw cache voorkomen. Als ze niet bestaan, meld ze dan in je log of ergens anders en voeg ze toe aan de cache. Maar als er te veel records zijn, zal de verwerkingstijd aanzienlijk toenemen + geheugenverbruik.

  3. Als u db kunt wijzigen, kunt u iets als de kolom 'isNew' aan uw tabel toevoegen. Wanneer er nieuwe gegevens van de website komen, zal de kolom 'true' zijn, uw programma kan dit volgen, en na verwerking zet u deze vlag op false voor elk record. (Als de website deze vlag niet kan instellen, kunt u SQL TRIGGER NA INSERT gebruiken om de vlagwaarde in te stellen op waar. Website kan deze functie niet eens kennen als het een website van derden is of als u daar niets wilt wijzigen)

  4. Hier is een artikel over het volgen van EF-wijzigingen:http://blogs.msdn.com/b/adonet/archive/2009/06/10/poco-in-the-entity-framework-part-3-change-tracking-with- poco.aspx

Maar het probleem is dat je de hele tabel moet controleren op wijzigingen via EF die de prestaties van je app beïnvloeden.

Hier vindt u nuttige informatie over concepten voor het volgen en implementeren van wijzigingen aan SQL Server:http://www.mssqltips.com/sqlservertip/1819/using-change-tracking-in-sql-server-2008/http://msdn.microsoft. com/en-us/library/bb933994.aspx



  1. Een SOx-compliancechecklist voor PostgreSQL

  2. Hoe SQLite Count() werkt

  3. Waarom kan er slechts één TIMESTAMP-kolom zijn met CURRENT_TIMESTAMP in de DEFAULT-clausule?

  4. Hoe maak je een PL/SQL-functie in Oracle Database?