Erro no comando INSERT INTO - SQL SERVER

toblesu

Power Member
Oias,

Pretendo inserir dados numa tabela, que possui algumas FOREIGN KEYS, no entanto ocorre o seguinte erro:

Warning: mssql_query() [function.mssql-query]: message: The INSERT statement conflicted with the FOREIGN KEY constraint "FK_prod_enc_cores". The conflict occurred in database "mabiliz", table "dbo.cores", column 'cod_cor'. (severity 16) in C:\xampp\htdocs\mabiliz\Cliente\trata_forms\encomenda.php on line 74

Não consigo entender porquê...
O código referente a este INSERT é:


while($row=mssql_fetch_row($bd2))
{
$ref = $row[1];
$qt = $row[3];
$pvp = $row[2];
$cor=$row[7];
$acab=$row[8];
$tec=$row[9];
$obs2=$row[11];
$obs3=$row[12];

$resul=mssql_query("select cod_cor, cod_acab, cod_tec from cores, acabamento, tecidos where descritivo='$cor' and tipo='$acab' and tecido='$tec'");
$res_l=mssql_fetch_row($resul);

$bd_penc=mssql_query("select * from prod_enc");
$num2=mssql_num_rows($bd_penc)+1;

$add_prod_enc="INSERT INTO prod_enc
(
cod_prod_enc, cod_enc, referencia, qt, pvp_linha, cod_cor, cod_acab, cod_tec, obs2, obs3
)
VALUES
(
'$num2','$num','$ref','$qt','$pvp','$res_l[0]','$res_l[1]','$res_l[2]','$obs2','$obs3'
)";

$del_dados_temp="DELETE from temp where ped_id='$id' and ref='$ref'";
$sql2=mssql_query($add_prod_enc);
$sql3=mssql_query($del_dados_temp);

Se me puderem ajudar.......

Obrigado.

 
Última edição:
Deve ser pelo seguinte:

PHP:
VALUES 
                    (
                    '$num2','$num','$ref','$qt','$pvp','$res_l[0]','$res_l[1]','$res_l[2]','$obs2','$obs3'
                    )";



Mete assim:


PHP:
VALUES 
                    (
                    '".$num2."','".$num."','".$ref."','".$qt."','".$pvp."','".$res_l[0]."','".$res_l[1]."','".$res_l[2]."','".$obs2."','".$obs3."'
                    )";
 
De facto, era isso que estava acontecer...... e como este código funcionava a 100% no mysql, qd passei para SQL SERVER não entendia o erro... porque não acontecia!

obrigado!
já resolvi o problema!

;)
 
De facto, era isso que estava acontecer...... e como este código funcionava a 100% no mysql, qd passei para SQL SERVER não entendia o erro... porque não acontecia!

Era só prestar atenção à mensagem de erro, que a resposta era simples ;)
Sempre que surgem conflitos com chaves estrangeiras tens de investigar essas situações.
 
Como no mysql nao dava esse erro..nem sequer coloquei essa hipotese.. se calhar os constraints estavam mal construídos no mysql e daí nao dar o erro!

O meu problema prendia-se com, por exemplo, quando uma pessoa nao seleccionava uma cor, predefini um resultado como sendo "--" e na BD era guardado como campo vazio... nao dava problemas...
acontece que no SQL SERVER deu logo problema e então sequer coloquei essa questão.... o código já estava criado algum tempo, e passou ao lado.... não lembrei!!


Obrigado na mesma!
 
Back
Topo