У меня есть код, который использует GENERATEDKEY из атрибута результата тега cfquery за последние несколько лет. Недавно я заметил, что это больше не часть структуры, возвращаемая Result.
<cfquery name="qryTest" datasource="#DSN#" result="sResult">
INSERT INTO users(fName, lName, City) VALUES(
'Test1', 'Test2', 'Test3')
</cfquery>
<cfdump var="#sResult#">
Я получаю только CACHED, EXECUTIONTIME, RECORDCOUNT и SQL. Среда - CF2016, SQL Server 2014.
Ответ 1 · рейтинг 1 · James A Mohler
Вы пытаетесь сделать что-то подобное?
<cfquery name="qryTest" datasource="#DSN#">
INSERT
INTO users(fName, lName, City)
OUTPUT inserted.id
VALUES('Test1', 'Test2', 'Test3')
</cfquery>
Ответ 2 · Kannan.P
Я просто просматриваю вашу проблему. Я считаю, что ваша таблица (пользователи) не имеет каких-либо ограничений - параметров PK (первичный ключ) и IDENTITYCOL (автоматическое увеличение). Чтобы он не возвращал ключи IDENTITYCOL & GENERATEDKEY в вашей структуре результатов. Здесь,
<cfquery name="InsertData1" datasource="testmssql" result="test" >
INSERT INTO loginDetails VALUES( 'xxx','yyy')
</cfquery>
Я вставил данные двух столбцов, и в моей таблице loginDetails есть параметры PK и Identitycol. Таким образом, в результате дампа он должен возвращать структуру с ключом и значениями для CACHED, EXECUTIONTIME, GENERATEDKEY, IDENTITYCOL, RECORDCOUNT и SQL, как показано ниже.
<cfquery name="InsertData1" datasource="testmssql" result="test" >
INSERT INTO test2 VALUES( 'xxx','yyy')
</cfquery>
Здесь моя таблица test2. Я не устанавливал параметры Autoincrements (Constraints). Таким образом, он не возвращает GENERATEDKEY,IDENTITYCOL в структуре результата. Как и мое изображение ниже.
Поэтому я предлагаю, пожалуйста, проверить, на стороне БД, есть ли у этой таблицы правильные ограничения или нет.