From 427e5c3e4c9e7859c71dbe5468280460b1614042 Mon Sep 17 00:00:00 2001 From: Joeri Akkerman Date: Wed, 5 Nov 2025 11:37:39 +0100 Subject: [PATCH 1/2] patch has constraint method for sql server driver --- migrator.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/migrator.go b/migrator.go index 7ba71bb..1db4a06 100644 --- a/migrator.go +++ b/migrator.go @@ -572,7 +572,7 @@ func (m Migrator) HasConstraint(value interface{}, name string) bool { } return m.DB.Raw( - `SELECT count(*) FROM sys.foreign_keys as F inner join sys.tables as T on F.parent_object_id=T.object_id inner join INFORMATION_SCHEMA.TABLES as I on I.TABLE_NAME = T.name WHERE F.name = ? AND I.TABLE_NAME = ? AND I.TABLE_SCHEMA like ? AND I.TABLE_CATALOG = ?;`, + `SELECT count(*) FROM sys.check_constraints as C inner join sys.tables as T on C.parent_object_id=T.object_id inner join INFORMATION_SCHEMA.TABLES as I on I.TABLE_NAME = T.name WHERE C.name = ? AND I.TABLE_NAME = ? AND I.TABLE_SCHEMA like ? AND I.TABLE_CATALOG = ?;`, name, tableName, tableSchema, tableCatalog, ).Row().Scan(&count) }) From baf59741f10743e6981f7057d67ce7cff336e650 Mon Sep 17 00:00:00 2001 From: Joeri Akkerman Date: Fri, 7 Nov 2025 16:45:35 +0100 Subject: [PATCH 2/2] fix fetching constraint for foreign keys as well --- migrator.go | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/migrator.go b/migrator.go index 1db4a06..1ef7940 100644 --- a/migrator.go +++ b/migrator.go @@ -572,7 +572,18 @@ func (m Migrator) HasConstraint(value interface{}, name string) bool { } return m.DB.Raw( - `SELECT count(*) FROM sys.check_constraints as C inner join sys.tables as T on C.parent_object_id=T.object_id inner join INFORMATION_SCHEMA.TABLES as I on I.TABLE_NAME = T.name WHERE C.name = ? AND I.TABLE_NAME = ? AND I.TABLE_SCHEMA like ? AND I.TABLE_CATALOG = ?;`, + `SELECT count(*) FROM ( + SELECT C.name, T.name as table_name FROM sys.check_constraints as C + INNER JOIN sys.tables as T on C.parent_object_id=T.object_id + INNER JOIN INFORMATION_SCHEMA.TABLES as I on I.TABLE_NAME = T.name + WHERE C.name = ? AND I.TABLE_NAME = ? AND I.TABLE_SCHEMA like ? AND I.TABLE_CATALOG = ? + UNION + SELECT FK.name, T.name as table_name FROM sys.foreign_keys as FK + INNER JOIN sys.tables as T on FK.parent_object_id=T.object_id + INNER JOIN INFORMATION_SCHEMA.TABLES as I on I.TABLE_NAME = T.name + WHERE FK.name = ? AND I.TABLE_NAME = ? AND I.TABLE_SCHEMA like ? AND I.TABLE_CATALOG = ? + ) as constraints;`, + name, tableName, tableSchema, tableCatalog, name, tableName, tableSchema, tableCatalog, ).Row().Scan(&count) })