sql >> Database teknologi >  >> RDS >> Sqlserver

Sådan omdøbes primær nøglebegrænsning for flere tabeller i SQL Server-databasen - SQL Server / TSQL vejledning del 64

Scenarie:

Du arbejder som SQL Server Developer eller SQL Server DBA. Du arbejder på at navngive standarder for databaseobjekter. Du har bemærket, at i en af ​​databaserne følger de primære nøglebegrænsninger ikke din virksomheds standarder for navngivning, dvs. "Pk_SchemaName_TableName_ColumnName" som vist nedenfor med rødt.

Sådan omdøbes primærnøglebegrænsning for flere tabeller i SQL Server-database - SQL-vejledning

Løsning:

Først og fremmest skal vi finde de primære nøglebegrænsninger, som ikke følger standarder for navngivningskonventioner. Hver virksomhed kan have forskellige navnekonventionsdokumenter. Din virksomhed inkluderer muligvis ikke Schema Name i Primary Key Constraint. Du kan ændre den valgte forespørgsel og fjerne Table_Schema fra nedenstående script.
 
USE YourDatabaseName
GO
--Declare Variables
DECLARE @DatabaseName AS VARCHAR(128)
DECLARE @SchemaName AS VARCHAR(128)
DECLARE @TableName AS VARCHAR(128)
DECLARE @ColumnName AS VARCHAR(128)
DECLARE @ConstraintName AS VARCHAr(128)

DECLARE CUR CURSOR
FOR
--Get Primary Key Constraint
Select
   TC.Table_Catalog as DatabaseName,
   TC.Table_Schema AS TableSchema,
   TC.Table_Name AS TableName,
   CCU.Column_Name AS ColumnName,
   TC.Constraint_Name AS ConstraintName
  From
   information_Schema.Table_Constraints TC  
INNER JOIN
   Information_Schema.constraint_column_usage CCU  
      on TC.Constraint_Name=CCU.Constraint_Name  
      and TC.Table_Name=CCU.Table_Name  
where
   Constraint_Type='PRIMARY KEY'
--Change your criteria as per your naming convention 
   and 'Pk_'+TC.Table_Schema+'_'+TC.Table_Name
   +'_'+CCU.Column_Name<>TC.Constraint_Name
OPEN Cur
FETCH NEXT
FROM Cur
INTO @DatabaseName,@SchemaName,@TableName,@ColumnName,
@ConstraintName
WHILE @@FETCH_STATUS = 0
BEGIN
    --Build dynamic sql for each database 
    DECLARE @SQL VARCHAR(MAX) = NULL
   SET @SQL ='sp_rename '+Char(10)
   SET @SQL+='@objname ='''+@SchemaName+'.'+@ConstraintName+''',' 
   SET @SQL+='@newname='''+'Pk_'+@SchemaName
   SET @SQL+='_'+@TableName+'_'+@ColumnName+''','
   SET @SQL+='@objtype = ''object'''
    --EXEC (@SQL)
    PRINT @SQL
    FETCH NEXT
    FROM Cur
    INTO @DatabaseName,@SchemaName,@TableName,@ColumnName,
@ConstraintName
END
CLOSE Cur
DEALLOCATE Cur


Jeg udførte ovenstående script på en af ​​mine databaser, og her er udskrevne erklæringer, som jeg ser for to primære nøglebegrænsninger, som ikke fulgte navnestandarderne i henhold til min virksomheds standarder.
Sådan omdøbes primære nøglebegrænsninger for flere SQL Server-tabeller i SQL-databasen


De primære nøglebegrænsninger blev omdøbt med succes som vist nedenfor. Sådan verificeres og omdøbes primære nøglebegrænsninger i SQL Server-databasen i SQL Server
  1. Sådan får du første og sidste dag i forrige måned (med tidsstempel) i SQL Server

  2. Brug SET TEXTSIZE til at begrænse de data, der returneres for hver række i SQL Server

  3. Indstil en standardværdi for en kolonne i SQLite:DEFAULT Constraint

  4. Hvordan vælger man data mellem to datoer fra sqlite db i formatet dd-mm-åååå?