1. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

Probleme bei Update und Insert: disallow_zero_length

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von PeterW, 29 Juli 2019.

  1. PeterW

    PeterW Benutzer

    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
     
  2. akretschmer

    akretschmer Datenbank-Guru

    Aufgrund der schieren Masse an Informationen, die Du hier gibst, kann man nur raten. Ich rate also mal: die betreffende Spalte, wo NULL eingefügt wird, ist mit NOT NULL definiert.
     
  3. PeterW

    PeterW Benutzer

    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
     
  4. akretschmer

    akretschmer Datenbank-Guru

    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"
    
     
  5. akretschmer

    akretschmer Datenbank-Guru

    ... und vermutlich bei weiteren Feldern. Siehe Definition der Tabelle - die uns nicht bekannt ist.
     
  6. Dravion

    Dravion Benutzer

    Die Spalte Anrede darf nicht leer sein.
     
  7. akretschmer

    akretschmer Datenbank-Guru

    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 ...
     
  8. Dravion

    Dravion Benutzer

    Die Bezeichnung spricht eigentlich für sich: $Anrede$disallow_zero_length
     
  9. ukulele

    ukulele Datenbank-Guru

    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.
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden