Boa tarde! estou problema - sql -with recursive

sc_commit_trans();
sc_lookup(ds, ‘SELECT LAST_INSERT_ID() FROM fin_despesa LIMIT 1’);
$id = {ds[0][0]};

if({quant} > 0)
{
$sql = “INSERT INTO fin_animais (id_despesa, num)
WITH RECURSIVE quant (obr, numero) AS
(
SELECT $id obr, 1 numero
UNION ALL
SELECT obr, numero + 1
FROM quant WHERE numero < {quant}
)
SELECT obr, numero FROM quant”;
sc_exec_sql ($sql);

}

Alguém poderia verificar o que está errado neste código de INSERT utilizado WITH RECURSIVE

Em qual SGDB.
Mas fica a dica o sc_commit_trans() encerra a conexão atual e acho que por isto perde o last_insert_id .

1 Curtida

Olá;

Você não informou o seu repositório de dados mas imagino que seria mais prático você testar no shell interpretador do seu SGBD, assim você terá uma eficiência melhor no debug.
Fique atento à recursividade em inserções pois você vai criar registros em lote indo pro tudo ou nada e não vai ter um rollback à disposição; terá que recorrer de fato ao DELETE se não for o esperado.