View Full Version : Erro no comando INSERT INTO - SQL SERVER


toblesu
06-03-2008, 01:03
Oias,

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

Warning: mssql_query() [function.mssql-query (http://localhost/mabiliz/Cliente/trata_forms/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\encome nda.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.

mascker
06-03-2008, 02:14
Boas,

Nem todos usam a skin preta.

Olha o teu post.

http://img257.imageshack.us/img257/6097/imagem1uq5.th.png (http://img257.imageshack.us/my.php?image=imagem1uq5.png)

Muda para se poder perceber...

Saudações

Hipnoted
06-03-2008, 09:23
Deve ser pelo seguinte:

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


Mete assim:


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

toblesu
06-03-2008, 15:50
Viva,

Infelizmente a tua dica nao resultou.... continua dar o mm erro....

obrigado na mesma!

SkylineGTR
06-03-2008, 15:56
Provavalmente estás a inserir como código de cor um código que não existe na tabela "cores".

toblesu
06-03-2008, 16:26
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!

;)

SkylineGTR
06-03-2008, 16:37
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.

toblesu
06-03-2008, 17:25
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!