Czy jeśli np. mam w tabeli kolumny: imie,nazwisko,wiek.
To zawsze stosować dla imion i nazwisko ograniczenie NULL w trakcie tworzenia tabeli oraz ograniczenie CHECK >= dla wieku?
Zależy od Twoich potrzeb..Nie ma zawsze, nigdy. Jeżeli sprawdzasz po stronie klienta, to tutaj duplikujesz to działanie.
Czasami samemu można coś przeoczyć i nie wstawić w daną kolumnę wartośći. Więc nie wiem czy to się wstawia czy nie w takich przypadkach?
I jeszcze takie pytanie stworzyłem tabelę:
CREATE TABLE NazwiskaIWiek
(
Nazwisko nvarchar(50),
Wiek int CHECK (Wiek >= 0)
);
I mimo to wstawiłem takie dane do tabeli:
INSERT INTO NazwiskaIWiek(Nawisko, Wiek)
VALUES ('Wiesław', -22);
Może mi ktoś wyjaśnić czemu ograniczenie check nie działa?
Bo MySQL nie zapimplementowało Checka ;-).
Ja zazwyczaj ustawiam check na poziomie programu. Jest to o tyle wygodniejsze, że w przypadku aplikacji desktopowej mogę wyświetlić okienko z listą błędów i ustawić się na polu edycyjnym odnoszącym się do 1-szego błędu.
w mysqlu można to ustawić?
Czy w mysqlu można jakoś usunąć primary i foreign key?
Już ktoś ci odpisał, że MySQL NIE ZAIMPLEMENTOWAŁ Check. Sprawdza tylko, czy check jest poprawny semantycznie. Jak to ładnie napisali w dokumentacji: "The CHECK clause is parsed but ignored by all storage engines."
A PRIMARY i FOREIGN KEY można usunąć. Również szukaj w dokumentacji w okolicach ALTER TABLE