Data+NULL

0

Dlaczego jezeli nie wpisze w polu daty nic, tzn. jest pusty ciag znakow po zatwierszeniu(zaladowaniu) pow wiersza do bazy kompilator wypluwa blad wlasnie dotyczacy daty. Nie mozna w bazie przypisac pustego pola daty?
Uzywam bazy typu Sybse. Moze MySQL sobie z tym radzi jakos- nie uzywalem jej nigdy, ale moze wy....

0

a poże masz pole not null??? Co my wróżki jesteśmy?

0

zależy od abzy danych ale w polu tabeli nie może być klauzuli NOT NULL, a wpisując datę ie należy robić z siebei idioty tylko pisać NULL, bo inaczej BD może próbować przetłumaczyć '', lub ' ' jako jakąś prawidłową datę.
Po to wymyslono NULL aby tego używać i aby nie było wątpliwości co jest wartością pustą dla róznych typów danych.

0
daban napisał(a)

zależy od abzy danych ale w polu tabeli nie może być klauzuli NOT NULL

taaa, kto cie tak okłamał?

0

hmm chochliki zeżarły "w tabeli NIE może być NOT NULL"

0

Widać nawet, że niegramatycznie się zrobiło bez tego NIE.

0
daban napisał(a)

hmm chochliki zeżarły "w tabeli NIE może być NOT NULL"

dalej nie wiem o co Ci chodzi, bo widziałem, że tam jest not tylko troche inaczej napisane :P

Jak to nie może być NOT NULL?? A kto i zabroni nadać polu (obojętnie jakiego typu) warunku NOT NULL??

0

Nie wiem czy kolega MisiekD nie czytał dokładnie/nie czytał ze zrozumieniem/kpi w każdym razie jeśli chce się posiadać wartość pustą w polu typu data to nie wolno ustawić w tym polu własności NOT NULL i podczas INSERT INTO ... trzeba wpisywać dla odpowiedniej kolumny NULL. Wówczas większość delphiowych komponentów wyświetli puste pole (hmm jak czytam z query pole to uzyskuję "pusty" sting). Jeśli ustawisz pole jako obowiązkowe - NOT NULL zaczyna sie problem bo musisz coś podać. Widziałem już jak ktoś podaje 0 - owszem przyjmuje ale wówczas w delphi ustawia jakąś archaiczną datę, ew. trzeba ręcznie zrobić przechwytywanie tego typu sytuacji. Po to ktoś wymyślił i zaimplementował NULLa, a nawet są całe dokumenty o algebrze NULLa (np. NUll+cos=NULL :)) aby to wykorzystywać. Ten problem jest dokładnie idealnym przykładem na jego wykorzystanie. Prosty przykład mam jakieś fakturowanie i jest tam wystawiono dnia i zapłacono dnia. O ile pierwszą datę można wpisać od razu, o tyle drugą niekoniecznie.
Przykładowa tabela
CREATE TABLE FAKTURA (
FAKTURA_ID INTEGER NOT NULL,
FAKTURA_DATE1 TIMESTAMP NOT NULL,
FAKTURA_DATE2 TIMESTAMP);

następnie wkładamy rekord znając 1 datę, nie znając 2 - bo klient jeszcze nie zapłacił:
INSERT INTO FAKTURA VALUES(1,'2005-10-12 1200',NULL)
i możemy teraz wyświetlać, bez żadnych problemów, a jak klient zapłaci po 2 dniach:
UPDATE FAKTURA SET FAKTURA_DATE2='2005-10-14 1200' WHERE FAKTURA_ID=1
i mamy cały rekord wypełniony.

Jest to prawidłowy przyklad zastosowania wartości NULL do rozwiązywania tego problemów (BD Firebird), niektóre BD mogą umożliwiać inne rozwiązania, co nie zmienia faktu że tak właśnie powinno się robić, a jesli ktos stosuje inne rozwiązanai - to a - jest zaawansowanym użytkownikiem i wie co i dlaczego własnei tak robi (pytajacy raczej nie jest), b - jest kretynem (mniemam że pytający także nie jest). Podawać powinno się odpowiednie i prawidłowe rozwiązania.

0

Misiekd , deban ma racje nie czytasz ze zrozumienirm, sam tworzylem te baze i gdybym mial no null to bym chyba o tym wiedzial....

Deban dzieki....

0

daban ja wiem co pisze i wiem co to jest NOT NULL, w bazach siedzę kilka lat więc mi tego tłumaczyć nie musisz. napisałeś (dokładny cytat tylko zmieniłem abzy na bazy i ine na nie) "zależy od bazy danych ale w polu tabeli nie może być klauzuli NOT NULL". Z tego zdania jasno wynika, że nie każda baza danych pozwala na definiowanie pola z klauzulą NOT NULL. Mów i pisz co chcesz ale tego nie da się inaczej zrozumieć. Stąd moje dwie odpowiedzi.

saw jak ją sam tworzyłeś to z łaski swojej należało odpowiedzieć po moim pytaniu czy nie ma tam przypadkie NOT NULL a nie czekać aż ktoś to zrobi za Ciebie.

0

MisiekD - taki porządny facet (spora wiedza) a ciska się jak 15 latek. Jeśli znasz "bazy danych" w których nie można zdefiniować NOT NULL to lepiej zakop je w ogródku nich są tam gdzie ich miejsce. Zrobiłem literówkę i mój błąd, ale czy to powód aby się wyśmiewać przez ileś postów - w końcu sprostowałem że mi NIE zzarło. Myślałem że jesteśmy tu po to by czasem poszukać dla siebie odpowiedzi a czasem komuś pomóc - najlepiej w najbardziej przystępny sposób dla poziomu pytającego. Jeśli komuś zdarzy się wpadka a ktoś mu to wytknei to wypada się przyznać i tyle, a nie ciskać bez sensu. Jeśli znasz sposób w jaki obejść NOT NULL na polu i wpisywać NULL (poza wpisywaniem np. 0 i dekodowaniem że 0 to pomijamy) to napsiz chetnie się dowiem czegoś nowego, a jak nie to lepiej daj spokój

0

daban ja się z Ciebie nie naśmiewam, to po raz. Po dwa po to jest NOT NULL aby trzeba było coś w dane pole wpisać i tego się obejść nie da. Po trzy widzę, że się nie dogadamy więc dajmy spokój temu nieszczęsnemu NOT NULL i zajmijmy się czymś konstruktywnym :).

A do sawa to masz już odpowiedz i Ci działa czy nie?

1 użytkowników online, w tym zalogowanych: 0, gości: 1