![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 566 Pomógł: 35 Dołączył: 21.06.2006 Ostrzeżenie: (0%) ![]() ![]() |
Witajcie!
Idea jest prosta, mam tabelę grup wyglądającą tak: (IMG:http://wstaw.org/m/2011/03/17/Screen_shot_2011-03-17_at_21.31.38.png) Jak pewnie każdy się domyśla pole isDef gdy jest równe 1 mówi skryptowi, że dana kategoria jest domyślną. Problem jest taki, że użytkownicy to kombinatorzy i nawet jak zabezpieczam to od kodu ktoś może grzebać w sqlu (lub któryś plugin). Chciałbym od strony sqla zabezpieczyć to tak, aby "1" nie mogło wystąpić więcej niż raz. Zwykłe unique tu nie zadziała bo zera przecież mogą się powtarzać. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Normalnie użyłbyś CHECK(), ale MySQL tego nie obsługuje. Dosyć łatwo możesz to osiągnąć poprzez kombinację ENUMa i NULLa, tj:
NULLe traktujesz jako "nie", YES traktujesz jako "tak". Takie coś umożliwia nieistnienie żadnej domyślnej grupy, ale gwarantuje tylko jedną domyślną. PS. W MySQL (właściwie to ogólnie w SQL) stosuje się konwencję "underscore", czyli is_def, nie isDef. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 566 Pomógł: 35 Dołączył: 21.06.2006 Ostrzeżenie: (0%) ![]() ![]() |
Normalnie użyłbyś CHECK(), ale MySQL tego nie obsługuje. Dosyć łatwo możesz to osiągnąć poprzez kombinację ENUMa i NULLa, tj: NULLe traktujesz jako "nie", YES traktujesz jako "tak". Takie coś umożliwia nieistnienie żadnej domyślnej grupy, ale gwarantuje tylko jedną domyślną. PS. W MySQL (właściwie to ogólnie w SQL) stosuje się konwencję "underscore", czyli is_def, nie isDef. Hmm sprytne, dopilnowanie tego aby zawsze była domyślna tu już nie taki duży problem (IMG:style_emoticons/default/smile.gif) Co do notacji - wszystkie underscory przeprawiłem na notację somethingNice bo w każdym kodzie tak pisze więc po co w bazie danych kombinować (IMG:style_emoticons/default/smile.gif) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 15.10.2025 - 07:52 |