2016-02-04 5 views
0

Я новичок в SQL, в моем синтаксисе есть ошибка, которую я не понимаю. Любая помощь/предложения?NEW TO SQL, INSERT INTO 'TABLE' Ошибка

Я создал таблицу с именем СЧЕТ

CREATE TABLE `ACCOUNT` (
    `acc_ID` INT NOT NULL, 
    `acc_name` VARCHAR(45) NOT NULL, 
    `acc_manager` VARCHAR(45) NOT NULL, 
    `acc_balance` VARCHAR(45) NOT NULL, 
    `acc_transactionLimit` INT NOT NULL, 
    `acc_creditLimit` INT NOT NULL, 
    `OUTLET_out_ID` INT NOT NULL, 
    PRIMARY KEY (`acc_ID`), 
    INDEX `fk_ACCOUNT_OUTLET1_idx` (`OUTLET_out_ID` ASC), 
    CONSTRAINT `fk_ACCOUNT_OUTLET1` 
    FOREIGN KEY (`OUTLET_out_ID`) 
    REFERENCES `OUTLET` (`out_ID`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION); 

Никаких проблем до сих пор. Но когда я пытаюсь вставить записи в таблицу я получаю следующее сообщение об ошибке:

ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (Database.ACCOUNT, CONSTRAINT fk_ACCOUNT_OUTLET1 FOREIGN KEY (OUTLET_out_ID) REFERENCES OUTLET (out_ID))

я проверил назад на моем OUTLET справочной таблице:

CREATE TABLE `OUTLET` (
    `out_ID` INT NOT NULL, 
    `out_name` VARCHAR(45) NOT NULL, 
    `out_manager` VARCHAR(45) NOT NULL, 
    `out_address` VARCHAR(100) NOT NULL, 
    `out_phone` VARCHAR(15) NOT NULL, 
    `out_email` VARCHAR(45) NULL, 
    PRIMARY KEY (`out_ID`)) 

я не нашел каких-либо проблем с ним.

Однако при попытке вставить:

INSERT INTO ACCOUNT(acc_ID, acc_name, acc_manager, acc_balance, acc_transactionLimit, acc_creditLimit) VALUES 
(01, 'White', 'Mr.Good', '352.00', 1000.00, 500.00), 
(02, 'Hopkins', 'Mr.Good', '403.00', 1000.00, 500.00), 
(03, 'Aumbry', 'Mr.Good', '240.00', 1000.00, 500.00), 
(04, 'Kaze', 'Mr.Good', '76.00', 1000.00, 500.00), 
(05, 'Ashley', 'Mr.Bad', '24.00', 1000.00, 500.00), 
(06, 'Zoara', 'Mr.Bad', '503.00', 1000.00, 500.00), 
(07, 'Shawn', 'Mr.Bad', '34.00', 1000.00, 500.00), 
(08, 'Obsie', 'Mr.Bad', '278.00', 1000.00, 500.00), 
(09, 'Ven', 'Mr.Mr.Bad', '345.00', 1000.00, 500.00), 
(10, 'Zhan', 'Mr.Mr.Bad', '491.00', 1000.00, 500.00); 

Я получаю ошибку указанной выше.

+0

У вас есть данные в любой из таблиц? Обычно это вызывает такую ​​ошибку. – PhpDude

+0

Как чистое в сторону, стоит отметить, что MySQL - это всего лишь один тип баз данных SQL и имеется множество баз данных SQL. – Martin

+0

Вы указали OUTLET_out_ID как внешний ключ, но ваши вставки не имеют никаких назначений. –

ответ

1

Вам нужно вставить данные в выходе таблицы, OUTLET_out_ID ссылки, так как это NON-NULL колонна, но в foreign key, но ни одна из клавиш до сих пор не сделано, так что вы должны изменять порядок вставки соответственно.

Вы также не можете пропустить это значение, потому что оно NON-NULL, и ваши текущие вставки не работают, поскольку вы не даете ему действительную ссылку на внешний ключ.

вставки данных в исходной таблицы ваших внешних ключей Первый, а затем данные учетной записи второй.

Кроме того, данные, вставленные в таблицу выходных данных, должны соответствовать значениям, указанным в таблице Учетные записи, как это диктуется внешним ключом.


Лично я думаю, что легче в этих данных вставных ситуаций просто tinsert данных без ограничений FK и добавить эти условия после того, как данные были вставлены. Лично.

1

Было бы неплохо увидеть ваш настольный скрипт OUTLET; но тут есть что-то более очевидное: поле OUTLET_out_ID установлено на NOT NULL, а ваш скрипт INSERT не имеет значения для этого поля.

Итак, измените это поле на OUTLET_out_ID INT NULL или включите значения в свой запрос INSERT.

+0

У меня была ошибка в моем представлении, я хотел показать сценарий таблицы OUTLET, отредактированный и исправленный для дальнейшего использования.Думаю, теперь я лучше понимаю свою проблему. Спасибо за отзывы и помощь. – Zion