sql >> Database >  >> RDS >> Access

Voeg CreatedBy en CreatedOn in alle ontbrekende gegevenstabellen in SQL

Voeg CreatedBy en CreatedOn in alle ontbrekende gegevenstabellen in SQL

Wanneer we Access met SQL Server-oplossingen ontwerpen, voegen we bijna altijd CreateBy en CreatedOn toe aan al onze tabellen, zodat onze klanten kunnen zien wie records heeft gemaakt in de Access-frontend.

Script om CreatedBy en CreatedOn automatisch toe te voegen aan tabellen

Vaak nemen we SQL-databases over en hebben we een snelle manier nodig om beide velden aan alle tabellen in de database toe te voegen. Daartoe gebruiken we het volgende script om te controleren of CreatedBy en CreatedOn aanwezig zijn in de tabel en zo niet, voeg ze toe:
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

Het script leest uit tblTablePermissions, wat slechts een lijst is met SQL Server-tabellen die door de toepassing worden gebruikt. We gebruiken de tabel in onze DSNless-techniek.

Nadat u het script hebt uitgevoerd, zal SQL Server automatisch een datumstempel geven en de netwerknaam van de gebruiker in het veld CreatedBy plaatsen, zodat u een analyse kunt maken van het aantal nieuwe records dat in de loop van de tijd aan de database is toegevoegd en door wie.


  1. Hoe beïnvloeden IMMUTABLE, STABLE en VOLATILE trefwoorden het gedrag van de functie?

  2. Hoe krijg ik SQL-tekst van Postgres-gebeurtenistrigger

  3. NULL in MySQL (prestaties en opslag)

  4. Toegang geweigerd voor gebruiker 'root'@'localhost' (met wachtwoord:YES) (Mysql::Error)