CompusaMedlem sedan jan. 20023 327 inlägg CREATE TABLE KUND(
kundID MEDIUMINT PRIMARY KEY AUTO_INCREMENT,
kundFornamn CHAR(50) NOT NULL,
kundEfternamn CHAR(50) NOT NULL,
kundGatuadress CHAR(50),
kundPostnr CHAR(30),
kundStad CHAR(50),
kundLand CHAR(50) DEFAULT "Sverige",
kundTfn CHAR(50),
UNIQUE (kundFornamn, kundEfternamn, kundGatuadress, kundPostnr, kundStad, kundLand, kundTfn)
) TYPE INNODB;
Jag vill att man inte skall få lämna strängen kundFornamn och kundEfternamn tom. Är det NOT NULL som gäller då med, eller gäller detta bara på tal. Hur skulle det kunna se ut?
CompusaMedlem sedan jan. 20023 327 inlägg Även om jag inte lägger till någon data i kunFornamn och kundEfternamn så godkänns inserten. Varför? NOT NULL är väl att den måste ha ett värde? Hur skall jag gå tillväga?
LarsGMedlem sedan dec. 200012 464 inlägg Det går inte att få Mysql att förbjuda en tom sträng som värde. Det får du kontrollera själv.
CompusaMedlem sedan jan. 20023 327 inlägg Med andra ord så går det bara att hindra tom värden i tex INT?
@ndersMedlem sedan juni 200032 969 inlägg Nej, men du får skilja på tom sträng och null.
Du tror väl inte att du är förhindrad att lagra 0 i ett talfält för att du satt det inte null ska tillåtas?
LarsGMedlem sedan dec. 200012 464 inlägg Nej. Om du har definierat en character column (c) som not null och utan default så ska följande två sql-satser ge fel
insert into t(a,b,d,e) values(1,2,4,5)
insert into t(a,b,c,d,e) values(1,2,null,4,5)
Följande
insert into t(a,b,c,d,e) values(1,2,'',4,5)
ger inte fel.
CompusaMedlem sedan jan. 20023 327 inlägg
@nders skrev:
Nej, men du får skilja på tom sträng och null.
Du tror väl inte att du är förhindrad att lagra 0 i ett talfält för att du satt det inte null ska tillåtas?
Nej det tror jag inte, not null innebär väl att den inte får lämnas utan värde och 0 är ett giltigt tal.
LarsG skrev:
Nej. Om du har definierat en character column (c) som not null och utan default så ska följande två sql-satser ge fel
insert into t(a,b,d,e) values(1,2,4,5)
insert into t(a,b,c,d,e) values(1,2,null,4,5)
Följande
insert into t(a,b,c,d,e) values(1,2,'',4,5)
ger inte fel.
Okej nu börjar det klarna lite, not null verkar vara lite lömsk...
@ndersMedlem sedan juni 200032 969 inlägg
Nej det tror jag inte, not null innebär väl att den inte får lämnas utan värde och 0 är ett giltigt tal.
Precis, och tom sträng ('') är en jättejättegiltig sträng.