Frage

Ich habe die folgende Einschränkung für eine Spalte geschrieben I ‚Klasse‘ genannt haben:

CONSTRAINT gradeRule CHECK grade IN (‘easy’, ‘moderate’, ‘difficult’),

Ist es möglich, die gradeRule später zu aktualisieren unterschiedliche Werte haben? Zum Beispiel könnte ‚mittel‘ und ‚schwierig‘ geändert ‚mittel‘ und ‚hart‘.

Danke

War es hilfreich?

Lösung

Sie können die bestehende Einschränkung löschen und die neue Einschränkung mit der NOCHECK Option hinzufügen. Dies würde es ermöglichen Sie die Einschränkung, obwohl Daten in der Tabelle hinzufügen, um die Einschränkung verletzt. Das Problem mit diesem obwohl tun wäre, dass Sie nicht vorhandenen Datensätze zu aktualisieren wären in der Lage, ohne sie zuerst die Einschränkung übergeben.

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

Das ist zwar möglich, es ist nicht in der Regel wegen der möglichen Probleme empfohlen mit zukünftigem Updates der Daten.

Andere Tipps

Drop die Einschränkung, und dann die Ersatz-Einschränkung hinzufügen. Sie können nicht eine Einschränkung in SQL Server mindestens aktualisieren.

ALTER TABLE SomeTable DROP CONSTRAINT gradeRule

Darüber hinaus werden Sie die Tabellendaten aktualisieren müssen, bevor Sie die neue Einschränkung hinzufügen, so dass es die neue Einschränkung erfüllt.

Wenn Sie die Einschränkung ändern, um alle Daten aktuell in der Tabelle müssen die Einschränkung erfüllen. Also, wenn Du hast zwei Reihen von Daten mit ‚mäßig‘ und versuchte, den Zwang zu leicht, mittel zu ändern, und hart, es wäre nicht im Stich lassen.

So müßten Sie die neue Einschränkung machen (leicht, mittel, mittel, schwer, hart) oder, um die Daten zu den neuen Werten aktualisieren - mäßig -.> Medium etc

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top