a dziś mam dla państwa zagadkę.
zagadka powstała wczoraj w firmie, i aż się zdziwiłem, że okazała się taka skuteczna 🙂
zadanie jest proste. mamy tabelkę:
create table posts (id serial primary key, paired_with int references posts (id), title text, body text);
inne kolumny są nieistotne.
i teraz – post może być sparowany lub nie. jak nie jest – w paired_with ma null'a.
jak jest – to ma tam id innego postu.
nie można być sparowanym samym z sobą.
i teraz – chcemy stworzyć trigger lub triggery które utrzymają tam porządek:
- nie dopuszczą do parowania z samym sobą
- pilnują by wszystkie relacje były poprawne. czyli jeśli post 1 jest sparowany z 2 to 2 musi być z 1.
- posty mogą być wstawiane sparowane lub nie
- posty mogą być w dowolnej chwili update'owane.
proste? pewnie, że proste.
jak masz chwilę – napisz tego triggera(y)
jako ciekawostkę mogę podać, że znajomy tworzył wczoraj coś takiego przez kilka godzin 🙂
aha – ów znajomy proszony jest o nie podsyłanie rozwiązania.