Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

denes bastos

condição com campo serial do postgres

Recommended Posts

Sistema em ASP com Postgres

Olá, tenho um sistema em q a tabela chamado tem um id do tipo serial e outra tabela item_tipo_chamado

estou na tela de cadastro de chamado onde na hora de cadastrar o chamado tenho q fazer uma gravação na tabela item_tipo_chamado só que esta tabela item_tipo_chamado tem o campo id_chamado, quero incluir esse campo mas como ainda não gravei o id da tabela chamado ainda não consigo gravar o id dessa tabela na tabela item_tipo_chamado.

 

não sei se ficou claro mas a tabela item_tipo_chamado se relaciona com uma outra chamada tipo_chamado, então na verdade na minha tela posso marcar varios checkboxs q são os itens dos tipos de chamado

 

tipo_chamado: id, nometipo

item_tipo_chamado: id_chamado, id_tipo o id_chamado é o = ao id da tabela chamado, id_tipo é o id ta tabela tipo_chamado depois faço um join para trazer todos os chamados com seus respectivos tipos

não sei se fui claro mas valew.

Compartilhar este post


Link para o post
Compartilhar em outros sites

você precisa ter uma relacionamento entre as tabelas, na verdade, a impôrtancia de uma modelagem de dados bem definida até os mínimos detalhes, como os campos de relacionamentos, um velho ditado diz, que um relacionamento bem definido é a alma do aplicativo, pois daí saem todas as consultas e operações com o banco, influenciando diretamente na otimização e performance do aplicativo, dae você usa um INSERT, pegando o último ID da outra tabela.

Compartilhar este post


Link para o post
Compartilhar em outros sites

o que você precisa é reservar o proximo codigo da chave primaria. Em banco de dados como postgre e oracle temos o objeto sequence que é encarregado por incrementar o 'contador'.

 

segue exemplo:

 

		vSql = "SELECT NEXTVAL('sq_post')"
		Set oRs = oConexao.Execute(vSql)
		vIdPost = oRs(0)
		vSql = ""&_
			"	INSERT INTO "&_
			"		post "&_
			"		( "&_
			"			id_post "&_
			"			,id_topico "&_
			"			,id_membro_resposta "&_
			"			,post "&_
			"			,post_sem_html "&_
			"			,data_cadastro "&_
			"			,bloqueado "&_
			"		)"&_
			"	VALUES "&_
			"		( "&_
			"			" & vIdPost & " "&_ 'aqui vai a variavel com o valor resevado da sequence. esta variavel você utiliza para relacionar com as demais tabelas
			"			," & vIdTopico & " "&_
			"			," & vIdMembro & " "&_
			"			,'" & vResposta & "' "&_
			"			,strip_tags('" & vResposta & "') "&_
			"			,now() "&_
			"			,0 "&_
			"		)"

 

não se preocupe, o numero nunca se repete e este uso é o correto. pegar o 'MAX(CODIGO)' não garante que você pegue o codigo da ação daquele usuário

Compartilhar este post


Link para o post
Compartilhar em outros sites

ou você pode pegar atraves do você pode antes recuperar o ultimo registro incluido, você pode usar o SQL Last()

A função Last() retorna o último valor da coluna selecionada.

 

SELECT LAST(column_name) FROM table_name

 

 

ultimo registro e somar + 1 e inserir no bd

<%@ Language=VBScript %>
<% Option Explicit %>
<%
'conexao teste com  mdb
Dim localbd, bd

Set bd = Server.CreateObject("ADODB.Connection")
localbd = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source =" & Server.MapPath("banco.mdb") 
bd.Open localbd 

Dim sql, rs
Dim cd_pedido

Set rs = Server.CreateObject("ADODB.RecordSet")

if Request.Form("btenvia") = "Gerar Numero" then
       'Novo numero
       SQL = "SELECT MAX(N_PEDIDO)+1 AS ULITMO_PEDIDO FROM PEDIDO"
       Set rs = bd.Execute (sql)
       cd_pedido = rs.Fields("ULITMO_PEDIDO").Value 

       'inserindo novo numero
       bd.Execute ("INSERT INTO PEDIDO (N_PEDIDO) VALUES (" & cd_pedido & ")")
       rs.Close

end if

'verificando numero
SQL = "SELECT MAX(N_PEDIDO) AS ULITMO_PEDIDO FROM PEDIDO"
Set rs = bd.Execute (sql)
cd_pedido = rs.Fields("ULITMO_PEDIDO").Value 


rs.Close
Set rs = Nothing

bd.Close
Set bd = Nothing
%>
<html>
<head>
<title>Numero Sequencial</title>
</head>
<body>
<center>
<form  id="frm" action="Numero_Sequencial.asp" method="post">
Numero do ultimo pedio:<%=cd_pedido%><br>
<input type="submit" id="btenvia" name="btenvia" value="Gerar Numero" />
</form>
</center>
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.