Probleme bei Update und Insert: disallow_zero_length

PeterW

Benutzer
Beiträge
12
Hallo!
Zuerst einmal: Meine Erfahrung mit SQL Server steckt in den Kinderschuhen.
Nun zu meinen Problem:
Ich habe 2 Proceduren Update und Insert, alle mit Parameter.
Wenn alle Felder gefüllt sind klappt alles.
Wenn jedoch 1 Feld leer ist, dann gibts Probleme.
Wie kann ich dieses läsitige Problem beheben?
Besten Dank im voraus
mfg
Peter
 
Werbung:
Hallo!
Die gesammte Proc


Code:
@Anrede Varchar(25) = null, 
@Adresszeile_1 Varchar(50) = Null, 
@Adresszeile_2 Varchar(52) = null, 
@Adresszeile_3 Varchar(52) = null, 
@Strasse Varchar(52) = Null, 
@PLZ Varchar(10) = Null,
@Adressnummer int = 0

as
UPDATE dbo.tblKundenAdressen SET
Anrede = @Anrede,
Adresszeile_1 = isnull(@Adresszeile_1,''), 
Adresszeile_2 = isnull(@Adresszeile_1,''), 
Adresszeile_3 = isnull(@Adresszeile_1,''),
Strasse = isnull(@Strasse,''), 
PLZ = isnull(@PLZ,'')
WHERE Adressnummer = @Adressnummer;

 */

Bei der ausführung kommt es zu dieser Meldung:

Nachricht 547, Stufe 16, Status 0, Prozedur dbo.spTesten, Zeile 16 [Batchstartzeile 0]
Die UPDATE-Anweisung steht in Konflikt mit der CHECK-Einschränkung
"SSMA_CC$tblKundenAdressen$Anrede$disallow_zero_length".
Der Konflikt trat in der INSTALLATION-Datenbank, Tabelle "dbo.tblKundenAdressen",
column 'Anrede' auf.

Wenn ein "Anrede" ein "x" steht ist das Problem beim nächsten Feld

mfg
Peter
 
offenbar ein CHECK-Constraint, daß Anrede eine Länge größer als 0 haben muß.

Code:
CHECK-Einschränkung
"SSMA_CC$tblKundenAdressen$Anrede$disallow_zero_length"
 
Die Spalte Anrede darf nicht leer sein.

Ein '' ist nicht leer in dem Sinne, es gibt aber einen Constraint auf die Länge. Offenbar, laut Fehlermeldung. Der Fragesteller sollte also prüfen, welche Constraints da gesetzt sind. Kann ja auch sein, daß manche Felder mind. 3 Zeichen haben müssen, oder daß andere Regeln definiert sind ...
 
Werbung:
Im SQL Managementstudio leicht zu sehen unter der Tabelle \ Einschränkungen \ Rechtsklick auf SSMA_CC$tblKundenAdressen$Anrede$disallow_zero_length und dann das Script mal als SQL Code anzeigen lassen.

Du hast nur zwei Möglichkeiten:
A) Du modifizierst die Einschränkung
B) Du löscht die Einschränkung
C) Du veränderst den Insert so das Daten in der Spalte stehen, auch wenn der Wert eigentlich NULL wäre, z.B. mit
Code:
Anrede = isnull(@Anrede,''),

A und B stehen möglicherweise im Konflikt mit deiner Software. Je nachdem wer diese Einschränkungen geschrieben hat erwartet die da vermutlich und könnte sie mit einem Update wieder in diesen Zustand bringen. C ist natürlich gar nicht elegant und nicht gewollt.
 
Zurück
Oben