Если вам нужно использовать выражения для ввода значений, вы можете изменить VALUES
на SELECT
, хотя вы сможете указать только одну строку с SELECT
(если вы не используете UNION ALL
).
INSERT INTO TICKET_SALES (
TRXDATE,
KIOSKID,
BOOKINGREFERENCENUM
)
SELECT
'2019-01-18 16:59:29',
'KIOSK1',
1 + ISNULL(
(SELECT TOP 1 BOOKINGREFERENCENUM FROM TICKET_SALES ORDER BY BOOKINGREFERENCENUM DESC),
0)
Пожалуйста, остерегайтесь использования этого типа «уловок» для генерации идентификаторов, как указывали другие, это очень плохая идея (проверьте ответ StepUp, чтобы узнать, как исправить). [116 ]
Я хотел знать ту же самую вещь. Очевидное обходное решение должно поддержать пул потоков, что каждый выполняет синхронные вызовы ODBC и сообщен (и предупредите назад), асинхронно.
Обычно кажется, что такие вещи реализованы на другом уровне абстракции приложения или Вас самокрутка. Примерно что-либо, что включает blockable "открытое" действие, может породить поток в целях управления открытым и повышения сигнала или установки флага где-нибудь глобально, когда это происходит.
Некоторые платформы довольно хороши о предложении обеих разновидностей. Flex приходит на ум, где полезно для него играть приемы с единственным потоком browser/javascript/swf.
Эта статья MSDN могла быть начальной точкой для Вас: Выполнение Операторов ODBC: Асинхронное Выполнение