Pessoal estou usando banco de dados postgresSQL e nele tenho uma tabela chamada empresa que possue um campo idempres que é auto incremete ou (Serial no postgre) e o banco de dados tem concorrencia, mais de uma pessoa pode dazer a mesma transação.
Eu preciso fazer um insert na tabela empresa e pegar o idempresa que foi gerado e mandar para outra tabela.
Eu fiz uma aplicação do tipo controle e nela no evento onValidateSuccess fiz assim:
/**
- Insert a record on another table
*/
// SQL statement parameters
$insert_table_empresa = ‘empresa’; // Table name
$insert_fields_empresa = array( // Field list, add as many as needed
‘razao_social’ => “’{razao_social}’”,
‘nome_fantasia’ => “’{nome_fantasia}’”,
‘cnpj’ => “’{cnpj}’”,
‘cep’ => “’{cep}’”,
‘logradouro’ => “’{logradouro}’”,
‘numero’ => “’{numero}’”,
‘bairro’ => “’{bairro}’”,
‘cidade’ => “’{cidade}’”,
‘complemento’ => “’{complemento}’”,
‘uf’ => “’{uf}’”,
‘ramo_de_atividade’ => “’{ramo_de_atividade}’”,
‘tel1’ => “’{tel1}’”,
‘tel2’ => “’{tel2}’”,
‘email’ => “’{email_da_empresa}’”,
‘data_do_cadastro’ => “’{data_do_cadastro}’”,
);
// Insert record 1ª forma de pegar o idempresa é usar o comando RETURNING Currval(‘serial_seq_empresa_idempresa’)
$insert_sql_empresa = “INSERT INTO " . $insert_table_empresa
. " (” . implode(", “, array_keys($insert_fields_empresa)) . “)”
. " VALUES (” . implode(", ", array_values($insert_fields_empresa)) . “) RETURNING Currval(‘serial_seq_empresa_idempresa’)”;
sc_exec_sql($insert_sql_empresa);
Segunda forma que usei foi:
$insert_sql_empresa = “INSERT INTO " . $insert_table_empresa
. " (” . implode(", “, array_keys($insert_fields_empresa)) . “)”
. " VALUES (” . implode(", ", array_values($insert_fields_empresa)) . “) RETURNING idempresa”;
sc_exec_sql($insert_sql_empresa);
como pegar este retorno?
Se eu executar o comando direto no banco funciona:
Exemplo direto no banco:
INSERT INTO empresa (razao_social, nome_fantasia, cnpj, cep, logradouro, numero, bairro, cidade, complemento, uf, ramo_de_atividade, tel1, tel2, email, data_do_cadastro) VALUES (‘zvadvf’, ‘’, ‘18659920000181’, ‘37980000’, ‘w35wetrwer’, ‘2341’, ‘’, ‘Cássia’, ‘’, ‘MG’, ‘’, ‘35354112880’, ‘’, ‘ffwfewfwef@hotmail.com’, ‘20151204’) RETURNING Currval(‘serial_seq_empresa_idempresa’)
ou
INSERT INTO empresa (razao_social, nome_fantasia, cnpj, cep, logradouro, numero, bairro, cidade, complemento, uf, ramo_de_atividade, tel1, tel2, email, data_do_cadastro) VALUES (‘zvadvf’, ‘’, ‘18659920000181’, ‘37980000’, ‘w35wetrwer’, ‘2341’, ‘’, ‘Cássia’, ‘’, ‘MG’, ‘’, ‘35354112880’, ‘’, ‘werwerwer@hotmail.com’, ‘20151204’) RETURNING idempresa