SQL - projekt hotel - sprawdzenie dostępności pokoju

0

Mam do przygotowania w MSSQL projekt na dowolny temat. Wybrałem sobie zarządzanie hotelem. Główną tabelą jest tabela Rezerwacje zawierająca kolumny:
id_rezerwacji
id_gościa
data_rezerwacji - kiedy dokonano rezerwacji
data_zameldowania
data_wymeldowania
nr_pokoju

daty zameldowania i wymeldowania to są podawane w trakcie dokonywania rezerwacji. Chciałbym sprawdzać, czy podczas dodawania nowego rekordu do tej tabeli wprowadzany nr pokoju będzie dostępny w danym czasie. Planowałem sprawdzać to w osobnej funkcji, ponieważ nie mogę używać SELECT w CHECK. Na razie mam coś takiego, ale to nie działa, ponieważ gdy chcę stworzyć tabelę REZERWACJE pojawia się błąd:
<Cannot find either column "dbo" or the user-defined function or aggregate "dbo.sprawdz_czy_pokoj_jest_wolny", or the name is ambiguous./>

Do funkcji odwołuję się w następujący sposób:```

CONSTRAINT wolny_pokoj CHECK ( ( dbo.sprawdz_czy_pokoj_jest_wolny(nr_pokoju, data_zameldowania, data_wymeldowania ) = 1 ) 

Natomiast funkcja wygląda tak:

CREATE FUNCTION sprawdz_czy_pokoj_jest_wolny
(@nr_pokoju numeric(3,0), @data_zameldowania date, @data_wymeldowania date )

RETURNS bit
AS

BEGIN  
DECLARE @wartosc_zwracana bit
DECLARE @nr int

SELECT @nr = nr_pokoju  FROM REZERWACJE r WHERE @data_zameldowania > r.data_wymeldowania AND @data_wymeldowania < r.data_zameldowania 

IF @nr_pokoju IN ( @nr )
										
	SET @wartosc_zwracana = 1
ELSE 
	SET @wartosc_zwracana = 0

RETURN @wartosc_zwracana 
END 

Mógłbym prosić o podpowiedź co robię źle? Z góry dziękuję za każdą pomoc.

0

takie rzeczy robi się wyzwalaczem a nie ograniczeniem CHECK

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