2017-06-29 2 views
0
CREATE TABLE `db_customer`.`customer` (
    `customer_id` INT NOT NULL AUTO_INCREMENT, 
    `first_name` VARCHAR(45) NOT NULL, 
    `lastname` VARCHAR(45) NOT NULL, 
    `date_of_birth` DATE NOT NULL, 
    `country` VARCHAR(45) NOT NULL, 
    `email` VARCHAR(100) NOT NULL, 
    `username` VARCHAR(45) NOT NULL, 
    `short_biography` TEXT NOT NULL, 
    `photo` BLOB NULL, 
    PRIMARY KEY (`customer_id`) 
); 

DELIMITER $$ VERFAHREN CREATE table_in ( first_name VARCHAR (45), Nachname VARCHAR (45), DATE_OF_BIRTH DATE, Land VARCHAR (45), email VARCHAR (100), username VARCHAR (45), short_biography TEXT ) INSERT INTO Kunde BEGIN ( first_name, last_name , DATE_OF_BIRTH, Land , E-Mail, Benutzername, short_biography ) VALUES ( customer_id, first_name, laast_name, DATE_OF_BIRTH, Land, E-Mail, Benutzername, short_biography ); END $$SQL INSERT, UPDATE gespeicherte Prozedur

DELIMITER;

+1

Hallo. Welchen Fehler bekommst du? – derloopkat

+0

Ich bekomme einen Syntaxfehler, ich bin jetzt nicht der richtige Weg, um einen Code zu schreiben, ich bin ein Anfänger mit SQL – user8206823

+1

1) ['INSERT'] (https://dev.mysql.com/doc/refman/ 5.7/de/keywords.html) ist das reservierte Schlüsselwort, verwende es nicht für den SP-Namen. 2) 'customer_id' ist das automatische Inkrement, keine Notwendigkeit, den Wert zu übergeben und einzufügen. – Arulkumar

Antwort

1

Sie müssen das Trennzeichen ändern.

DELIMITER $$ 

CREATE PROCEDURE `table_in` 
(customer_id, first_name VARCHAR(45), lastname VARCHAR(45), date_of_birth DATE, 
country VARCHAR(45), email VARCHAR(100), username VARCHAR(45), short_biography TEXT) 
BEGIN 
    INSERT INTO customer (first_name, laast_name, date_of_birth, country, email, username, short_biography) VALUES (customer_id, first_name, laast_name, date_of_birth, country, email, username, short_biography); 
END$$ 

DELIMITER ; 

Dann wird es kompilieren. Andernfalls interpretiert MySQL Ihre gespeicherte Prozedur Anweisung für Anweisung.

1

1) Ihre Spaltennamen stimmen nicht mit den im SP verwendeten Spalten überein (first_name, laast_name).

2) customer_id ist das automatische Inkrement, also keine Notwendigkeit innerhalb des Einfügeblocks zu verwenden.

3) Wie in diesen answer vorgeschlagen verwenden, um die DELIMITER

DELIMITER $$ 
CREATE PROCEDURE `table_in` 
(first_name VARCHAR(45), lastname VARCHAR(45), date_of_birth DATE, 
country VARCHAR(45), email VARCHAR(100), username VARCHAR(45), short_biography TEXT) 
BEGIN 
    INSERT INTO customer (`name`, lastname, date_of_birth, country, email, username, short_biography) 
    VALUES (first_name, lastname, date_of_birth, country, email, username, short_biography); 
END$$ 

DELIMITER ; 
+0

TXS viel für jeden, Everything ist in Ordnung. – user8206823

Verwandte Themen