diff --git a/dbt/adapters/sqlserver/sql_server_adapter.py b/dbt/adapters/sqlserver/sql_server_adapter.py index e444b26a..5648d639 100644 --- a/dbt/adapters/sqlserver/sql_server_adapter.py +++ b/dbt/adapters/sqlserver/sql_server_adapter.py @@ -2,6 +2,7 @@ from typing import Optional import dbt.exceptions +from dbt.adapters.base import ConstraintSupport from dbt.adapters.fabric import FabricAdapter from dbt.contracts.graph.nodes import ConstraintType, ModelLevelConstraint @@ -31,13 +32,14 @@ class SQLServerAdapter(FabricAdapter): # Capability.TableLastModifiedMetadata: CapabilitySupport(support=Support.Full), # } # ) - # CONSTRAINT_SUPPORT = { - # ConstraintType.check: ConstraintSupport.NOT_SUPPORTED, - # ConstraintType.not_null: ConstraintSupport.ENFORCED, - # ConstraintType.unique: ConstraintSupport.ENFORCED, - # ConstraintType.primary_key: ConstraintSupport.ENFORCED, - # ConstraintType.foreign_key: ConstraintSupport.ENFORCED, - # } + CONSTRAINT_SUPPORT = { + ConstraintType.check: ConstraintSupport.ENFORCED, + ConstraintType.not_null: ConstraintSupport.ENFORCED, + ConstraintType.unique: ConstraintSupport.ENFORCED, + ConstraintType.primary_key: ConstraintSupport.ENFORCED, + ConstraintType.foreign_key: ConstraintSupport.ENFORCED, + ConstraintType.custom: ConstraintSupport.ENFORCED, + } # @available.parse(lambda *a, **k: []) # def get_column_schema_from_query(self, sql: str) -> List[BaseColumn]: @@ -76,8 +78,10 @@ def render_model_constraint(cls, constraint: ModelLevelConstraint) -> Optional[s + f"{constraint.name} foreign key({column_list}) references " + constraint.expression ) + elif constraint.type == ConstraintType.check and constraint.expression: + return f"{constraint_prefix} {constraint.name} check ({constraint.expression})" elif constraint.type == ConstraintType.custom and constraint.expression: - return f"{constraint_prefix}{constraint.expression}" + return f"{constraint_prefix} {constraint.name} {constraint.expression}" else: return None