2015-12-04 3 views
0

У меня есть 2 таблицы в MySQL. Первая таблица уже имеет значения. Теперь я хочу взять значения последней строки и вставить их во вторую таблицу, но я не знаю, как написать код Пролога для взятия последнего вставленного id. Вы можете мне помочь? Я пробовал что-то вроде этого, но это не сработало.Как получить последний идентификатор вставки в прологе

connect :- odbc_connect('connect', _, 
    [ user(root), 
     alias(test1911), 
     password(''), 
     open(once) 
    ]). 

fetch(Options) :- 
    connect, 
     odbc_prepare(test1911, 'select * from test ', [default, default,default], Statement, [fetch(fetch), types([integer, varchar, integer])]), 
     odbc_execute(Statement, [id,name,age]), 
     odbc_fetch(Statement, Row, last). 

Но я получаю эту ошибку

ERROR: Domain error: 'length' expected, found '[default,default,default]' 
+0

ошибка в отдельности, кажется очень неэффективной ... запрос может сканировать всю таблицу – CapelliC

+0

Что я могу знать? –

+0

В MySQL существует функция 'LAST_INSERT_ID()'. Но, основываясь на описании проблемы, похоже, что у вас более общие проблемы с сервером MySQL? – lurker

ответ

0

Эта ошибка SWI-Prolog ODBC специфичны. Это означает, что движок ODBC не знал, как преобразовать некоторое значение обратно в определенный тип. Экспериментируйте с типами ([по умолчанию, по умолчанию, по умолчанию]) в вызове подготовки (строка не преобразована/должна работать для любого типа), пока вы не определите то, что вызывает проблемы.

И возможно отправить уведомление автора/список рассылки SWI-Пролог, какой типа был проблематичным (если «мой» не был стар DBase «десятичной сохраняются в виде строки», я бы послал его ;-)