Trigger lub funkcja sqlite automatycznie uzupełniająca tebelę

0

Witam

Mam tabele:
LISTA- zawiera pola DATA, ID_OBECNOSCI=OBECNOSCI.ID, ID_PRACOWNICY=PRACOWNICY.ID;
OBECNOSCI - zawiera pola ID, NAZWA CZY_AKTYWNE;
PRACOWNICY - zawiera pola ID, IMIE, NAZWISKO, itd...;
LISTA_OBECNOSCI - zawiera ID_OBECNOSCI=OBECNOSCI.ID, ID_PRACOWNICY=PRACOWNICY.ID, LICZNIK.

Jak napisać trigger lub funkcję która po dodaniu pracownika do PRACOWNICY lub obecnosci do OBECNOSCI automatycznie wstawi wszystkie możliwe kombinacje pol OBECNOSCI.ID i PRACOWNICY.ID do tabeli LISTA_OBECNOSCI.

0

potrzebujesz dwa triggery, na tabele OBECNOSCI i PRACOWNICY na operacje insert

  1. dla OBECNOSCI
    wybierasz wstawiane obecnosci i robisz kombinacje ze wszystkimi pracownikami i wstawiasz do LISTA_OBECNOSCI
  2. dla PRACOWNICY
    wybierasz wstawoanych pracownikow i robisz kombinacje ze wszystkimi obecnosciami i wstawiasz do LISTA_OBECNOSCI

czego konkretnie nie wiesz?

0

Napisałem trigger, który po wstawieniu danych do tabeli LISTA zwiększa licznik dla odpowiedniej pary ID_PRACOWNIKA i ID_OBECNOSCI w tabeli LISTA_OBECNOSCI, ale po dodaniu kolejnego pracownika lub obecnosci muszę ręcznie w bazie dopisywać nowe pary ID_PRACOWNIKA i ID_OBECNOSCI w tabeli LISTA_OBECNOSCI. Chciałbym by baza sama tworzyła te pary. Potrafię to zrobić po stronie aplikacji, by to ona takie pary tworzyła, ale wolałbym by robiła to baza.

0

hmmm za pierwszym razem nie przyjrzalem sie twoim tabelkom
tabele LISTA i LISTA_OBECNOSCI sa bez sensu, dlaczego w LISTA sa klucze obce do OBECNOSCI i PRACOWNICY? i w LISTA_OBECNOSCI tez?
zakladam ze chciales uzyskac ze definiujesz liste obecnosci na dany dzien i chesz skladowac informacje czy dany pracownik byl czy nie danego dnia
czy OBECNOSCI to tabela definiujaca typy obecnosci, tzn. np. urlop, zwolnienie lekarskie, szkolenie etc.?
zakladam ze danego dnia (czyli na danej liscie) kazdy pracownik moze byc tylko raz

jesli sie nie pomylilem w interpretacji powinno byc tak:

OBECNOSCI: Id, Nazwa, CzyAktywne
PRACOWNICY: ... bez zmian
LISTA: Id, Data
LISTA_OBECNOSCI: ListaId, PracownikId, ObecnoscId

jesli cos zle zrozumialem to wytlumacz

jesli wstawiasz nowa liste, to po uzyskaniu jej Id, aby uzupelnic LISTA_OBECNOSCI o nowe wpisy dla tej listy, wystarczy:
insert into LISTA_OBECNOSCI values (ListaId, PracownikId, ObecnoscId)
select nowaListaId, Id, null from Pracownicy

0

Przemyślałem temat i postanowiłem, że zrezygnuję z tabeli LISTA_OBCNOSCI, bo żeczywiście jest bez sensu i po prostu będę zliczał wiersze w tabeli LISTA po interesujących mnie warunkach. Dzięki za pomoc.

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