Почему я получаю ошибку конфликта внешнего ключа при вставке значения в поле внешнего ключа.Вставляемое значение соответствует первичному ключу в справочной таблице - PullRequest
1 голос
/ 19 сентября 2019

Я вставляю запись в таблицу, используя первичный ключ автоинкремента.Затем я получаю доступ к новому первичному ключу и пытаюсь вставить его в поле, являющееся внешним ключом для новой первичной записи.Затем получите ошибку внешнего ключа.Код:

/******************  Insert new record in session table ************************/
$insBC2020sql = "insert into session (auctionid,auctiondate,created,lastupdated,sessiondate) output inserted.*
    values ('$auctionid','$saledt','$today','$today','$today')";

$insBC2020res = odbc_exec($conn_1,$insBC2020sql);

if (!$insBC2020res) {
    exit("Request Error --" . odbc_errormsg($conn_1));
}
/*********************  Retrieve primary key from last insert **************************/
while (odbc_fetch_row($insBC2020res)) {
        $sessionid    = odbc_result($insBC2020res, 1);

    echo "\r\n".$sessionid. "  ".$customerid;
}
}
/*************************  Insert retrived value into reference table ********************/
$inssql = "insert into bidcall2020.dbo.customersession (customerid,sessionid)
       values ('$customerid','$sessionid')";
echo $inssql."\r\n";

$insres = odbc_exec($conn_1, $inssql);
if (!$insres) {
    exit("Request Error --" . odbc_errormsg($conn_1));
}

Получить ошибку конфликта внешнего ключа.Sessionid - это внешний ключ.Полученное значение соответствует значению в первичной таблице.

1 Ответ

0 голосов
/ 19 сентября 2019

попробуйте

$sessionid    = odbc_result($insBC2020res, 0);

вместо

$sessionid    = odbc_result($insBC2020res, 1);
...