forked from ktaranov/sqlserver-kit
-
Notifications
You must be signed in to change notification settings - Fork 14
/
Copy pathRenameDefaultConstraints.sql
47 lines (45 loc) · 1.25 KB
/
RenameDefaultConstraints.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
/*
Author: Bill Fellows
Original link: http://billfellows.blogspot.ru/2017/06/rename-default-constraints.html
*/
-- Rename default constraints
DECLARE @query nvarchar(4000);
DECLARE
CSR CURSOR
FAST_FORWARD
FOR
SELECT
CONCAT('ALTER TABLE ', QUOTENAME(S.name), '.', QUOTENAME(T.name), ' DROP CONSTRAINT [', DC.name, '];', CHAR(10)
, 'ALTER TABLE ', QUOTENAME(S.name), '.', QUOTENAME(T.name)
, ' ADD CONSTRAINT [', 'DF__', (S.name), '_', (T.name), '_', C.name, ']'
, ' DEFAULT ', DC.definition, ' FOR ', QUOTENAME(C.name)) AS Query
FROM
sys.schemas AS S
INNER JOIN
sys.tables AS T
ON T.schema_id = S.schema_id
INNER JOIN
sys.columns AS C
ON C.object_id = T.object_id
INNER JOIN
sys.default_constraints AS DC
ON DC.parent_object_id = T.object_id
AND DC.object_id = C.default_object_id
WHERE
DC.name LIKE 'DF__%'
AND DC.name <> CONCAT('DF__', (S.name), '_', (T.name), '_', C.name);
OPEN CSR
FETCH NEXT FROM CSR INTO @query;
WHILE @@FETCH_STATUS = 0
BEGIN
BEGIN TRY
EXECUTE sys.sp_executesql @query, N'';
END TRY
BEGIN CATCH
PRINT ERROR_MESSAGE()
PRINT @query;
END CATCH
FETCH NEXT FROM CSR INTO @query;
END
CLOSE CSR;
DEALLOCATE CSR;