Können Sie eine SQL-Einschränkung replace oder aktualisieren?

Ich habe die folgende Einschränkung für eine Spalte geschrieben, die ich "Note" genannt habe:

CONSTRAINT gradeRule CHECK grade IN ('easy', 'moderate', 'difficult'), 

Ist es möglich, die gradeRule auf andere Werte zu aktualisieren? Zum Beispiel könnten "moderat" und "schwierig" in "mittel" und "schwer" geändert werden.

Vielen Dank

Solutions Collecting From Web of "Können Sie eine SQL-Einschränkung replace oder aktualisieren?"

Sie können die vorhandene Einschränkung löschen und die neue Einschränkung mit der NOCHECK-Option hinzufügen. Dadurch können Sie die Einschränkung hinzufügen, obwohl data in der Tabelle die Einschränkung verletzen. Das Problem dabei ist jedoch, dass Sie vorhandene datasätze nicht aktualisieren können, ohne sie zuerst an die Bedingung zu übergeben.

 ALTER TABLE SomeTable DROP CONSTRAINT gradeRule GO ALTER TABLE SomeTable ADD CONSTRAINT gradeRule ... WITH NOCHECK GO 

Obwohl dies möglich ist, wird es normalerweise wegen der möglichen Probleme mit zukünftigen Aktualisierungen der data nicht empfohlen.

Löschen Sie die Abhängigkeit und fügen Sie dann die Ersetzungseinschränkung hinzu. Sie können eine Einschränkung in SQL server nicht mindestens aktualisieren.

 ALTER TABLE SomeTable DROP CONSTRAINT gradeRule 

Darüber hinaus müssen Sie die Tabellendaten aktualisieren, bevor Sie die neue Integritätsbedingung hinzufügen, sodass sie die neue Integritätsbedingung erfüllt.

Wenn Sie die Einschränkung ändern, müssen alle derzeit in der Tabelle enthaltenen data die Einschränkung erfüllen. Wenn Sie also 2 datazeilen mit "moderat" hatten und versuchten, die Beschränkung auf "einfach", "mittel" und "schwer" zu ändern, würde es Sie nicht zulassen.

Sie müssten also die neue Einschränkung (einfach, mittel, schwer, schwer) machen oder die data auf die neuen Werte moderat -> mittel usw. aktualisieren.