2017-05-11 1 views
-1

Ich habe eine Benutzer-Tabelle beschweren, in der zwei Spalten beschwerenWie Verwenden Auto Increment Wert in zwei Spalten

Zeile id jedes spezifiziert
`complaint_id` MEDIUMINT UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT, 
`complaint_code` VARCHAR(20) NOT NULL , 

ich will, wenn der Benutzer bereitstellen complain_code dann wird es in der Regel eingesetzt werden und complaint_id haben ihre AUTO_INCREMENTED Wert, , aber wenn Benutzer überspringen, um das Feld "commenc_code" zu füllen, wird es auch mit AUTO_INCREMENTED von "meldung_id" gefüllt, wie bei reklamation_id.

Ich kann es mit Einfügen dann Update-Anweisung tun, aber ich möchte nur einzigen einfügen Anweisung verwenden.

ich weiß nicht, wie es geht, bitte helfen. Ich verwende mysql, PDO, PHP

+0

keine gute Idee, aber Sie können den max id bekommen und es machen + 1 –

+0

@knowledge .... nicht in der Lage, das gleiche Ziel wie einfügen zu verwenden – santosh

Antwort

2

Dies ist nicht zu schwer, wenn Sie einen MySQL-Trigger verwenden.

Der Trigger kann so eingestellt werden, dass er automatisch ausgeführt wird, sobald ein INSERT in Ihrer Tabelle ausgeführt wird, und er prüft, ob der comaplain_code leer ist. Wenn es leer ist, wird den nächsten autoincrement-Wert von complain_id für den comaplain_code auch verwenden:

einen Trigger erstellen, indem Sie diese:

DELIMITER $$ 
CREATE TRIGGER update_complain_code 
BEFORE INSERT ON `user_complaints` FOR EACH ROW 
begin 
    DECLARE next_id INT; 
    SET next_id = (SELECT AUTO_INCREMENT FROM information_schema.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='user_complaints'); 

    IF NEW.complaint_code is NULL OR NEW.complaint_code = '' 
    THEN 
     SET NEW.complaint_code=next_id; 
    END IF; 
END; 
$$ 
DELIMITER ; 
Verwandte Themen