Skip to content

Instantly share code, notes, and snippets.

@RickyLin
Last active September 22, 2020 03:06
Show Gist options
  • Save RickyLin/c44b1689e7f1195268cf7439336f1fe0 to your computer and use it in GitHub Desktop.
Save RickyLin/c44b1689e7f1195268cf7439336f1fe0 to your computer and use it in GitHub Desktop.
Create Primary Key on TableNameId Columns
SELECT T.TABLE_NAME, C.COLUMN_NAME, C.DATA_TYPE, C.IS_NULLABLE
INTO #Tables
FROM INFORMATION_SCHEMA.TABLES T
INNER JOIN (
SELECT TABLE_NAME, COLUMN_NAME, IS_NULLABLE, DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME = TABLE_NAME + 'Id'
) C ON C.TABLE_NAME = T.TABLE_NAME
WHERE T.TABLE_TYPE = 'BASE TABLE'
AND T.TABLE_NAME NOT IN (
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE CONSTRAINT_TYPE = 'PRIMARY KEY'
)
DECLARE @SqlScripts NVARCHAR(MAX)
SET @SqlScripts = ''
IF EXISTS ( SELECT * FROM #Tables WHERE IS_NULLABLE = 'YES' )
BEGIN
SELECT @SqlScripts = @SqlScripts + 'ALTER TABLE ' + TABLE_NAME + ' ALTER COLUMN ' + COLUMN_NAME + ' ' + DATA_TYPE + ' NOT NULL
'
FROM #Tables
WHERE IS_NULLABLE = 'YES'
END
ELSE
BEGIN
SELECT @SqlScripts = @SqlScripts + 'ALTER TABLE ' + TABLE_NAME + ' ADD CONSTRAINT PK_' + TABLE_NAME
+ ' PRIMARY KEY CLUSTERED ( ' + COLUMN_NAME + ' )
'
FROM #Tables
END
-- SELECT * FROM #Tables
SELECT @SqlScripts
DROP TABLE #Tables
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment