Мы используем Symfony2, Propel и триггеры с сервером mssql. Проблема заключается в следующем: * из формы мы вставляем новый объект в DB *, тогда триггер используется для регистрации вставки в таблицу *, то из объекта propel мы получаем вставленный ID => он ложный.Propel/mssql: последняя вставка ID
После дальнейшего анализа propel получает последний вставленный идентификатор в БД, используя функцию PHP PDO :: lastInsertId, которая возвращает идентификатор строки, вставленной в таблицу журнала.
Я думаю, что Propel должен использовать SELECT SCOPE_IDENTITY() вместо этого, это вернет идентификатор объекта, когда триггер запускается в другой контекст.
Вопрос в том, как сказать, чтобы использовать эту функцию? В пачке Propel, есть MssqlPropelPDO класс, реализация:
public function lastInsertId($seqname = null)
{
$result = self::query('SELECT SCOPE_IDENTITY()');
return (int) $result->fetchColumn();
}
Но этот класс не используется из моего кода, а это DebugPDO (я видел в в класс BasePeer).