Вы можете использовать чек как:
ALTER TABLE dbo.myTable ADD CONSTRAINT CK_myTable_CheckoutGreaterThanCheckin
CHECK (dbo.CheckDates()>1)
Затем добавьте функцию, например:
CREATE FUNCTION CheckDates()
RETURNS int
AS
BEGIN
DECLARE @retval int
SET @retval = (SELECT COUNT(*) FROM myTable WHERE checkout > checkin)
RETURN @retval
END;
Они могут работать не так, как написано (извините, в настоящее время у вас нет доступа к движку SQL).
Или, возможно, вы захотите включить проверку в запрос, чтобы вам не приходилось использовать обработку ошибок в своем коде, когда проверка не удалась.
Если вы просто хотите, чтобы вставка завершилась неудачно, вы можете расширить предложение where на что-то вроде:
INSERT INTO myTable (checkout)
VALUES(@checkout)
WHERE @checkout > @checkin AND IDcolumn = @IDcolumn
Если вы хотите вернуть какой-то индикатор того, что возникла проблема, вы можете либо использовать что-то вроде выше, но добавить SELECT @@ ROWCOUNT, либо вы можете просто проверить значение заранее:
DECLARE @var int
SET @var = (SELECT count(*)
FROM myTable
WHERE @checkout > checkin AND IDcolumn = @IDcolumn)
@ var будет равно 1, если передано значение.