«

»

Sep 01

Print this Post

Como faço para pegar o valor da chave primária de um registro adicionado ao banco de dados?

Muitas pessoas usam tabelas de banco de dados com chaves primárias autonumeradas. Estas são as colunas (normalmente chamadas “id”) que o banco de dados irá fornecer um valor simplesmente adicionando 1 ao maior valor passado. Portanto, se o último registro inserido tinha ID 5, a próxima será de 6. (Note que nem sempre isso é verdade. Você não pode assumir que o valor seguinte será um valor maior do que o passado.) Se você precisar descobrir qual valor foi usado na chave primária, o ColdFusion fornece uma maneira simples de fazer isso.

Para usar este recurso, primeiro você deverá inserir o atributo “result” a sua tag cfquery. Isto diz ao ColdFusion para salvar informações sobre a consulta(query) para a variável nomeada pelo atributo result.


<cfquery datasource="foo" result="result"> 
insert into people (name,email) 
values ("Paris Hilton", "trash@celebs.com") 
</cfquery>

Depois de executar essa query, uma estrutura chamada result será criada. A maioria das chaves(key) desta estrutura estão definidas, incluindo o SQL da consulta, recordcount e outros valores, no entanto, há uma chave especial(key) que irá armazenar o valor da chave primária atribuída a inserção. Infelizmente, o valor da chave irá variar dependendo do banco de dados. Para o SQL Server, o valor será na chave IDENTITYCOL. Para o Oracle, o valor será na chave ROWID. Para Sybase, o valor será na chave SYB_IDENTITY. Para Informix, o valor será na chave SERIAL_COL. Para o MySQL, o valor será na chave GENERATED_KEY.

Utilizando a consulta acima como exemplo e supondo que o banco de dados é o MySQL, você pode exibir o valor da chave primária da seguinte forma:


<cfoutput> 
O ID da linha que eu acabei de inserir foi #result.generated_key#. 
</cfoutput>

by Raymond Camden


 

Permanent link to this article: http://ensina.me/coldfusion/como-faco-para-pegar-o-valor-da-chave-primaria-de-um-registro-adicionado-ao-banco-de-dados/

Leave a Reply