How to check if a DATE being inserted or updated in a table is between two other dates from another table.
Adicional Info:
I have 2 tables:
Activity:
    
-  
StartDatedate NOT NULL -  
EndDatedate NULLABLE 
SubActivity:
    
-  
SubActivityDatedate NOT NULL 
When
EndDate IS NOT NULLI check if:StartDate≤SubActivityDate≤EndDateWhen
EndDate IS NULLI check if:StartDate≤SubActivityDate
I was trying to write a BEFORE INSERT trigger but I figured out that it doesnt exist.
So what I could do?
- AFTER INSERT?
 - INSTEAD OF INSERT? looks better than 1st solution
 - Is it possible just with CHECK Constraints?
 
How do I solve this problem?
EDIT
I just went with the CHECK constraint + function:
constraint:
ALTER TABLE SubActivity
    ADD CONSTRAINT CK_SubActivity_Date CHECK (dbo.ufnIsSubactivityDateValid(ActivityID, SubActivityDate) = 1);
function:
CREATE FUNCTION ufnIsSubactivityDateValid(@ActivityID [int], @SubActivityDate [date])
RETURNS [bit]
AS
BEGIN
    DECLARE @StartDate date, @EndDate date;
    SELECT @StartDate = StartDate , @EndDate = EndDate 
    FROM Activity
    WHERE ActivityID = @ActivityID;
    IF (@SubActivityDate < @StartDate )
        RETURN 0; -- out of range date
    IF (@EndDate IS NULL)
        RETURN 1; -- good date
    ELSE
        IF (@SubActivityDate > @EndDate)
            RETURN 0; -- out of range date
    RETURN 1; -- good date
END