Skip to content

Commit 6d2bb6d

Browse files
committed
fix: The HasConstraint is fixed by adding a Unique Check
1 parent ca15d94 commit 6d2bb6d

File tree

1 file changed

+12
-0
lines changed

1 file changed

+12
-0
lines changed

migrator.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -573,17 +573,29 @@ func (m Migrator) HasConstraint(value interface{}, name string) bool {
573573

574574
return m.DB.Raw(
575575
`SELECT count(*) FROM (
576+
-- Check CHECK constraint
576577
SELECT C.name, T.name as table_name FROM sys.check_constraints as C
577578
INNER JOIN sys.tables as T on C.parent_object_id=T.object_id
578579
INNER JOIN INFORMATION_SCHEMA.TABLES as I on I.TABLE_NAME = T.name
579580
WHERE C.name = ? AND I.TABLE_NAME = ? AND I.TABLE_SCHEMA like ? AND I.TABLE_CATALOG = ?
580581
UNION
582+
-- Check foreign key constraints
581583
SELECT FK.name, T.name as table_name FROM sys.foreign_keys as FK
582584
INNER JOIN sys.tables as T on FK.parent_object_id=T.object_id
583585
INNER JOIN INFORMATION_SCHEMA.TABLES as I on I.TABLE_NAME = T.name
584586
WHERE FK.name = ? AND I.TABLE_NAME = ? AND I.TABLE_SCHEMA like ? AND I.TABLE_CATALOG = ?
587+
UNION
588+
-- Check Unique Constraint
589+
SELECT UK.name, T.name as table_name FROM sys.key_constraints as UK
590+
INNER JOIN sys.tables as T on UK.parent_object_id = T.object_id
591+
INNER JOIN INFORMATION_SCHEMA.TABLES as I on I.TABLE_NAME = T.name
592+
WHERE UK.type = 'UQ' AND UK.name = ? AND I.TABLE_NAME = ? AND I.TABLE_SCHEMA like ? AND I.TABLE_CATALOG = ?
585593
) as constraints;`,
594+
// CHECK constraint parameter
595+
name, tableName, tableSchema, tableCatalog,
596+
// Foreign key constraint parameters
586597
name, tableName, tableSchema, tableCatalog,
598+
// Unique Constraint Parameter
587599
name, tableName, tableSchema, tableCatalog,
588600
).Row().Scan(&count)
589601
})

0 commit comments

Comments
 (0)