Es scheint also, als wäre es ziemlich einfach und ich schwöre, ich habe das schon mal gemacht, aber aus irgendeinem Grund funktioniert es einfach nicht für mich.
Ich verwende MAMP
und habe eine Tabelle mit ungefähr 200 Spalten und ich möchte, dass ungefähr 20 davon auf 0 gesetzt werden, wenn NULL oder leere Daten darin eingefügt werden.
Hier ist ein kleines Beispiel dafür, wie meine Tabelle aussieht und was ich für Spalten getan habe, die ich standardmäßig auf 0 setzen möchte.
%Vor% Also bemerken Sie auf BathsFull
Ich habe es auf NOT NULL DEFAULT '0'
gesetzt Das Problem ist, dass wenn leere Daten an es übergeben werden, bekomme ich einen SQL-Fehler von SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'BathsFull' cannot be null
.
Ich habe auch versucht, dass BathsFull accepts
NULL and
DEFAULT '0', aber wenn leere Daten übergeben werden, zeigt die Tabelle NULL
anstelle von 0
.
Fehle ich hier etwas? Muss ich eine Art Trigger schreiben? Ich möchte nicht die Daten in meinem Skript scrubben, bevor ich es in die DB setze, wenn ich nicht muss.
Wenn Sie den Wert in Ihrer Einfügung explizit auf NULL setzen, aber MySQL die Null durch 0 ersetzen soll, können Sie die Spalte so definieren, dass in der CREATE TABLE
-Anweisung NULL zulässig ist, und dann die Variable ersetzen NULL mit TRIGGER
.
In etwa so:
%Vor%Probieren Sie es in dieser SQL Fiddle
ausSie haben vergessen, die INSERT-Abfragen zu posten, aber ich bin mir sicher, dass das Problem da ist. Dies funktioniert wie erwartet:
%Vor% ... weil Sie BathsFull
weglassen, so verwendet MySQL das defalt. Das tut nicht:
... weil Sie MySQL mitteilen, dass Sie NULL
wollen.
Tags und Links sql mysql database phpmyadmin mamp