Содержание
Контроль ссылочных типов
Помимо контроля типов (Integer, Float, Currency, String...) внутренний язык запросов так же контролирует ссылочные типы. Значение поля ссылающегося на таблицу A нельзя записать в поле ссылающееся на таблицу B.
Например, эти запросы будут обозначены как некорректные
// Поле Id - это первичный ключ, он всегда ссылается на себя. Т.е. в этом случае на dirContragent // Поле Group - это ссылка на таблицу dirContragentGroup Update dirContragent Set Group = Id // Поле Id в этом случае ссылается на dirCategory Update dirContragent Set Group = (Select Top 1 Id From dirCategory) // Запросы Insert так же не допускаются Insert Into dirContragent(Name, Group) Values('Test', (Select Top 1 Id From dirCategory));
Так же нельзя сравнивать ссылочные поля различных типов.
Select * From dirContragent Where Group = Id
При любой арифметической операции ссылочный тип исчезает. И такой запрос пройдет проверку.
Update dirContragent Set Group = Id + 0 Select * From dirContragent Where Group * 1 = Id