@@ -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