2014-06-29 43 views
1

我正在使用redbeanPHP ORM和mysql。我有以下表格:無論索引是否唯一,插入到mysql表中的重複記錄

CREATE TABLE `mast` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT, 
`note` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, 
`geolocation` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, 
`location` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, 
`zip` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, 
`state` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, 
`app` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, 
PRIMARY KEY (`id`), 
UNIQUE KEY `UQ_84a93b55f688c94f73092dba1b9590c41a92cbf5` (`app`,`geolocation`) 
) ENGINE=InnoDB AUTO_INCREMENT=98 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci 

我想插入記錄「桅杆」表提供他們相對於上面列出的2場的獨特。換句話說,如果「地理位置」或「應用程序」是重複的,我不想插入關聯的記錄。

我使用下面的PHP代碼中插入使用rebean記錄:

 $resultBean= R::dispense('mast'); 
     $resultBean ->import($resultsarray); 

       try { 

       $id = R::store($resultBean); // TRY TO INSERT INTO MAST 

       } catch (Exception $exc) { 

       } 

插入發生,除了我注意到,被插入至少在「應用程序」字段重複的記錄。我得到一個正常的記錄,而重複的所有零或空值,除了'應用程序'字段有重複的條目。

我不想在表中有重複的條目。我怎樣才能防止他們被插入?

回答

4

如果是「地理位置」或「應用」是重複的,我 不想插入相關記錄。

UNIQUE KEY `UQ_84a93b55f688c94f73092dba1b9590c41a92cbf5` (`app`,`geolocation`) 

只有防止appgeolocation被複制。

如果你想防止任何一個單獨被複制,添加單獨的索引每個即

CREATE UNIQUE INDEX UQ_app ON mast (app); 
CREATE UNIQUE INDEX UQ_geolocation ON mast (geolocation); 
+0

感謝您的解釋。 – user61629

相關問題