2017-02-20 2 views
0

Ich habe das folgende SQL-SchemaON DUPLICATE KEY UPDATE ist einen neuen Rekord Einfügen

CREATE TABLE IF NOT EXISTS `video_video_sprout` (
    `video_id` int(6) default NULL, 
    `sprout_video_id` varchar(25) default NULL, 
    `is_video_type` tinyint(1) default NULL , 
    `someval` varchar(25) default NULL 
) ; 

INSERT INTO `video_video_sprout` (`video_id`, `sprout_video_id`, `is_video_type`,someval) VALUES(62, '4c9ad9b71c1fe2c6c4', 1,'empty'); 


INSERT INTO video_video_sprout (video_id,sprout_video_id,is_video_type) 
VALUES(62, '4c9ad9b71c1fe2c6c4', 1) ON DUPLICATE KEY UPDATE  
someval="UpdatedValue" ; 

Incase die Zeile bereits vorhanden ist, ich will, dass die Zeile aktualisieren, sonst muß ich

diese Zeile einfügen ich war es auf diese Weise

INSERT INTO video_video_sprout 
      (video_id,sprout_video_id,is_video_type) 
     VALUES 
      (62, '4c9ad9b71c1fe2c6c4', 1) 
     ON DUPLICATE KEY UPDATE someval="UpdatedValue" ; 

Da dieser Datensatz bereits versucht, vorhanden ist, muss ich die Zeile aktualisieren oder aber einen neuen Datensatz basierend erstellen.

+2

Die Tabelle muss einen eindeutigen Index haben, damit sie weiß, welche Spalten auf Duplizierung geprüft werden sollen. – Barmar

Antwort

2

Sie haben vergessen, den Primärschlüssel der Tabelle zu deklarieren.

CREATE TABLE IF NOT EXISTS `video_video_sprout` (
    `video_id` int(6) default NULL, 
    `sprout_video_id` varchar(25) default NULL, 
    `is_video_type` tinyint(1) default NULL , 
    `someval` varchar(25) default NULL, 
    PRIMARY KEY (video_id, sprout_video_id) 
) ; 

Ohne einen eindeutigen Schlüssel, INSERT kann einen doppelten Schlüssel nicht erkennen.

+0

Ich kann keinen primären Schlüssel auf video_id haben, da es zwei Zeilen video_id haben wird, – Pawan

+1

, dass das Problem genau dort ist ... auf doppelten Schlüssel funktioniert nicht ohne eine eindeutige Einschränkung –

+0

Dann ist Ihr Datenbankschema gebrochen. Und Sie brauchen immer noch eine eindeutige ID oder etwas anderes, das für das Match einzigartig ist. – junkfoodjunkie

Verwandte Themen