sql >> Database teknologi >  >> RDS >> Access

Indsæt CreatedBy og CreatedOn i eventuelle manglende datatabeller i SQL

Indsæt CreatedBy og CreatedOn i eventuelle manglende datatabeller i SQL

Når vi designer Access med SQL Server-løsninger, tilføjer vi næsten altid CreatedBy og CreatedOn til alle vores tabeller, hvilket giver vores kunder mulighed for at se, hvem der har oprettet poster i Access-frontend.

Script til at tilføje CreatedBy og CreatedOn automatisk til tabeller

Mange gange arver vi SQL-databaser, og vi har brug for en hurtig måde at tilføje begge felter til alle tabeller i databasen. Til det formål bruger vi følgende script for at kontrollere, om CreatedBy og CreatedOn er til stede i tabellen, og hvis de ikke er, tilføje dem:
DECLARE @ROWID Int
DECLARE @SQLExecute Varchar(max)
DECLARE @Table_Name VARCHAR(Max)
DECLARE @Qty Int
SET @rowid = 0
SET @Table_Name = ''
DECLARE grant_tbl_cursor CURSOR FOR
SELECT  Table_Name
FROM tblTablePermissions
OPEN grant_tbl_cursor
FETCH NEXT FROM grant_tbl_cursor
INTO @Table_Name
WHILE @@FETCH_STATUS = 0
BEGIN
IF COL_LENGTH(@Table_Name, 'CreatedOn') IS NULL
BEGIN
/*Column does not exist or caller does not have permission to view the object*/
select @sqlExecute = 'alter table [' + @Table_Name + '] add CreatedOn DateTime2(0) DEFAULT CURRENT_TIMESTAMP NULL' 
PRINT @SQLExecute
EXECUTE( @sqlExecute)
END
IF COL_LENGTH(@Table_Name, 'CreatedBy') IS NULL
BEGIN
select @sqlExecute = 'alter table [' + @Table_Name + '] add CreatedBy Varchar(25) DEFAULT suser_sname() NULL' 
EXECUTE( @sqlExecute)
End
FETCH NEXT FROM grant_tbl_cursor
INTO @Table_Name
END
CLOSE grant_tbl_cursor
DEALLOCATE grant_tbl_cursor

Scriptet læser fra tblTablePermissions, som blot er en liste over SQL Server-tabeller, der bruges af applikationen. Vi bruger bordet i vores DSN-fri teknik.

Når du har udført scriptet, vil SQL Server automatisk date stemple og placere brugerens netværksnavn i CreateBy-feltet, så du kan lave en analyse af, hvor mange nye poster der blev tilføjet til databasen og af hvem over tid.


  1. Hvordan løser man almindelige problemer med MySQL-databasen?

  2. Oracle Live SQL

  3. SQL MIN() for begyndere

  4. Er der en MySQL-indstilling/-funktion til at spore historikken for ændringer i poster?