У меня есть пользовательская функция SQL, которая возвращает 1 или 0, и я хочу вызвать ее из ограничения CHECK столбца.Могу ли я вызвать пользовательскую функцию из ограничения CHECK столбца?
4
A
ответ
4
Да. SQL Anywhere не имеет логического типа данных, поэтому вам нужно закодировать предикат, который дает TRUE, FALSE или UNKNOWN. Другими словами, если ваша функция возвращает 1 или 0 для прохода или отказа, вы должны закодировать ограничение как CHECK (f() = 1).
Обратите внимание, что ИСТИНА и НЕИЗВЕСТНЫЕ оба результата приводят к «проходу»; только результат FALSE приводит к сбою проверки.
В следующем примере показано, как ALTER для таблицы, которая уже содержит данные, для добавления столбца с таким ограничением CHECK.
Брек
CREATE TABLE t (
pkey INTEGER NOT NULL PRIMARY KEY);
INSERT t VALUES (1);
COMMIT;
CREATE FUNCTION is_filled_in (
IN @value VARCHAR (100))
RETURNS TINYINT
BEGIN
IF COALESCE (@value, '') <> '' THEN
RETURN 1;
ELSE
RETURN 0;
END IF;
END;
ALTER TABLE t ADD c VARCHAR (3) DEFAULT 'xxx'
CHECK (is_filled_in (c) = 1);
-- Works ok...
INSERT t VALUES (2, 'yyy');
COMMIT;
-- Throws SQLCODE -209 Invalid value for column 'c' in table 't'...
INSERT t VALUES (3, '');
COMMIT;
SELECT * FROM t;
Смежные вопросы
- 1. Как я могу вызвать пользовательскую функцию на вкладках Ionic 2?
- 2. Могу ли я динамически вызвать локальную функцию?
- 3. Могу ли я объявить пользовательскую функцию в разделе кода?
- 4. Crystal Reports 10: Можно ли вызвать пользовательскую функцию из команды
- 5. Могу ли я вызвать функцию из списка? (python2.7)
- 6. Как я могу вызвать функцию из класса
- 7. Как я могу вызвать функцию из dll?
- 8. Могу ли я вызвать функцию выбора даты (времени) из функции?
- 9. Могу ли я вызвать анонимную функцию самозапуска из разных областей?
- 10. Могу ли я вызвать функцию Javascript из файла coffeescript?
- 11. Могу ли я вызвать функцию AngularJS из Selenium
- 12. Могу ли я создать пользовательскую функцию журнала консоли в js?
- 13. Как я могу вызвать функцию?
- 14. Могу ли я создать пользовательскую функцию roleprovider через службу WCF?
- 15. Как я могу конструировать пользовательскую функцию?
- 16. Могу ли я создать пользовательскую функцию в панели инструментов Clearcase?
- 17. Как вызвать пользовательскую функцию в Hive?
- 18. Как вызвать пользовательскую функцию onclick() в jquery
- 19. Есть ли способ вызвать XSLT пользовательскую функцию по имени?
- 20. Как вызвать пользовательскую функцию в RcppParallel?
- 21. Могу ли я вызвать функцию внешней viewmodel на нокауте?
- 22. Как я могу вызвать функцию несколько раз?
- 23. Могу ли я вызвать функцию производного класса в базовом классе?
- 24. Можно ли вызвать пользовательскую функцию без имени схемы?
- 25. Можно ли вызвать пользовательскую функцию с помощью setTimeout Node.js
- 26. Как я могу вызвать функцию в C++
- 27. Как я могу вызвать функцию экземпляра?
- 28. Невозможно вызвать пользовательскую функцию в Laravel
- 29. Как вызвать пользовательскую функцию jquery onClick
- 30. Как вызвать пользовательскую функцию в JMeter
И вам понадобилось всего 1 мин, чтобы найти такой длинный ответ вам свой вопрос ?? –
@Stefan: У меня был ответ готов, так что «1 минута» на самом деле отражает то, как я медленный, а не быстро. AFAIK это нормально, чтобы публиковать вопросы с ответами, по крайней мере, в соответствии с FAQ. –