Так как HyTech SQL не имеет в настоящий момент встроенных средств контроля целостности (за исключением ограничений уникальности), контроль целостности возлагается на триггеры. По ошибке, совершенной в триггере, можно судить о результате проверки целостности.
Вставить запись в таблицу, проверив ошибку триггера.
create trigger tbiREADER on READER
before insert position 2 for each row
begin
if( new.DEPOSIT < 150 )
{
// ошибка появится, если внесенная сумма залога
// меньше 150 рублей
htSetError(-8001);
}
end;
// начать транзакцию на таблице reader
begin work T1 table READER;
// вставить ошибочные данные
insert into READER(FNAME, LNAME, RNUM, DEPOSIT)
values('Василий','Демидович', 'Д123', 15);
var @rc = lastsqlerr();
// проверяем на наличие ошибки в триггере
if(@rc >= -8999 and @rc <= -8000)
{
? 'Ошибка триггера ' + @rc + '\n';
rollback work T1;
}
else
{
commit work T1;
}
Код ошибки, который возвращается триггером, можно проверить после выполнения операции с помощью функции lastsqlerr. Код ошибки из триггера преобразуется в коды ошибки по следующим правилам:
· Коды в диапазоне от -8000 до -8999 не изменяются;
· Коды в диапазоне от 1 до 999 преобразуются в коды от -8001 до -8999;
· Коды в диапазоне от -1 до -999 преобразуются в коды от -8001 до -8999;
· Остальные коды преобразуются в код -10 (Операция запрещена).
Встроенные SQL функции