2012-05-24 51 views
1

我有一個5列的表。 ID,姓名,公司&標題。在MySQL數據庫中設置重複條目的警告

所以我現在想要做的是在提交過程中檢查重複的條目,比較名稱和姓氏組合匹配。這會導致提醒重複條目並選擇繼續並將其保存到數據庫中,或者取消提交內容。

在此先感謝。

+1

你試過什麼? –

回答

0

你有這樣的選擇:

  • 設置的 「(名字,姓氏)」
  • 每個插入之前的常規指標,檢查 「(名字,姓氏)」 的組合已經存在
  • IF NOT EXISTS,做插入normaly [這裏是你來考慮風險,在這1ms的時間某人別人可能會做同樣的插入]是否存在
  • 和強制模式,加上該行反正
  • 如果存在而不是f orce模式下,根據您的規格前進到客戶端
  • 如果客戶想要保存,則以強制模式重複操作。

這裏的替代方案,如果你真的認爲這是值得的,那就是插入行,並且AFTERWARDS檢查是否有前面的行。如果客戶想保留記錄,請保留,否則刪除。

RGDS

+0

選項#2不是原子操作:「元組是否存在?不可以。[另一個進程在它們之間插入]根據錯誤繼續執行!」至少需要使用交易。 – Piskvor

+0

Tuple's?他使用PHP,而不是Python。 –

+0

獨特選項不允許您按照答案中的要求「保存」。因此,在它被標記之前將它從你的答案中刪除;)。 – Robbie

0

那麼這裏就是我試過了,但沒弄明白問題中提及但可選的選擇代碼。

$query = "INSERT INTO phptablo (Name, Surname, Company, Title) VALUES ('$name', '$surname', '$company', '$title')"; 

$sql = "SELECT Name AND Surname FROM phptablo WHERE Name = '$name' AND Surname= '$surname'"; 

$result = mysql_query($sql); 
$count = mysql_num_rows($result); 
$row = mysql_fetch_array($result); 

echo "$sql" . '<br/><br/>'; 

echo "$result" . '<br/><br/>'; 

if ($count==0) 
{ 
    if (!mysql_query($query)) 
    { 
     die('Error: ' . mysql_error()); 
    } 

    echo "Successful Entry!"; 
} 
else 
{ 
    echo "Duplicate Entry found!"; 
} 

很新到PHP MySQL的&所以不能真正使多大作用的大加讚賞的答案。任何機會添加一些代碼,讓我選擇保存或不?

我現在在哪裏,如果檢測到重複條目,則輸入不會保存到數據庫中,否則會立即存儲。如果我寫的代碼無法真正改變保存重複的方式,我也可以使用某種屏幕顯示保存後的重複內容,以便它們可以被編輯,擦除等。