diff --git a/forward_engineering/configs/templates.js b/forward_engineering/configs/templates.js index 75e1f53a..ca486f33 100644 --- a/forward_engineering/configs/templates.js +++ b/forward_engineering/configs/templates.js @@ -23,7 +23,7 @@ module.exports = { spatialIndex: 'CREATE SPATIAL INDEX ${name} ON ${table} (${column})${using}\n${options}${terminator}\n', - checkConstraint: 'CONSTRAINT [${name}] ${check}${notForReplication} (${expression})', + checkConstraint: 'CONSTRAINT [${name}] CHECK${notForReplication} (${expression})', createForeignKeyConstraint: 'CONSTRAINT ${name} FOREIGN KEY (${foreignKey}) REFERENCES ${primaryTable} (${primaryKey}) ${onDelete}${onUpdate}', @@ -75,7 +75,7 @@ module.exports = { addColumn: 'ADD ${script}', addCheckConstraint: - 'ALTER TABLE ${tableName} ADD CONSTRAINT ${constraintName} ${check} (${expression})${terminator}', + 'ALTER TABLE ${tableName}${noCheck} ADD CONSTRAINT ${constraintName} CHECK (${expression})${terminator}', addNotNullConstraint: 'ALTER TABLE ${tableName} ALTER COLUMN ${columnName} ${columnType} NOT NULL${terminator}', diff --git a/forward_engineering/ddlProvider.js b/forward_engineering/ddlProvider.js index e05bb2f3..17c87b97 100644 --- a/forward_engineering/ddlProvider.js +++ b/forward_engineering/ddlProvider.js @@ -255,10 +255,9 @@ module.exports = (baseProvider, options, app) => { return createTableIndex(terminator, tableName, index, isActivated && isParentActivated); }, - createCheckConstraint(checkConstraint, isInline = true) { + createCheckConstraint(checkConstraint) { return assignTemplates(templates.checkConstraint, { name: checkConstraint.name, - check: checkConstraint.check || isInline ? 'CHECK' : 'NOCHECK', notForReplication: checkConstraint.enforceForReplication ? '' : ' NOT FOR REPLICATION', expression: _.trim(checkConstraint.expression).replace(/^\(([\s\S]*)\)$/, '$1'), terminator, @@ -717,7 +716,7 @@ module.exports = (baseProvider, options, app) => { alterTableAddCheckConstraint(fullTableName, checkConstraint) { return assignTemplates(templates.alterTableAddConstraint, { tableName: fullTableName, - constraint: this.createCheckConstraint(checkConstraint, false), + constraint: this.createCheckConstraint(checkConstraint), terminator, }); }, @@ -977,7 +976,7 @@ module.exports = (baseProvider, options, app) => { constraintName, expression, terminator, - check: check ? 'CHECK' : 'NOCHECK', + noCheck: check ? '' : ' WITH NOCHECK', }; return assignTemplates(templates.addCheckConstraint, templateConfig); }, diff --git a/forward_engineering/helpers/alterScriptHelpers/alterEntityHelper.js b/forward_engineering/helpers/alterScriptHelpers/alterEntityHelper.js index b676f5aa..c7c6f186 100644 --- a/forward_engineering/helpers/alterScriptHelpers/alterEntityHelper.js +++ b/forward_engineering/helpers/alterScriptHelpers/alterEntityHelper.js @@ -43,7 +43,7 @@ module.exports = (app, options) => { }), ); const checkConstraints = (jsonSchema.chkConstr || []).map(check => - ddlProvider.createCheckConstraint(ddlProvider.hydrateCheckConstraint(check), true), + ddlProvider.createCheckConstraint(ddlProvider.hydrateCheckConstraint(check)), ); const tableData = { name: tableName, diff --git a/forward_engineering/helpers/alterScriptHelpers/entityHelpers/checkConstraintHelper.js b/forward_engineering/helpers/alterScriptHelpers/entityHelpers/checkConstraintHelper.js index 9a818524..eef16c56 100644 --- a/forward_engineering/helpers/alterScriptHelpers/entityHelpers/checkConstraintHelper.js +++ b/forward_engineering/helpers/alterScriptHelpers/entityHelpers/checkConstraintHelper.js @@ -91,8 +91,9 @@ const getUpdateCheckConstraintScriptDtos = (_, ddlProvider) => (constraintHistor const oldName = historyEntry.old.chkConstrName; const newName = historyEntry.new.chkConstrName; const hasOnlyNameChanged = oldExpression === newName && newName !== oldName; + const hasCheckChanged = historyEntry.old.constrCheck !== historyEntry.new.constrCheck; - return oldExpression !== newExpression || hasOnlyNameChanged; + return oldExpression !== newExpression || hasOnlyNameChanged || hasCheckChanged; } return false; })