Я обнаружил ошибку в SQL и не могу исправить эту ошибку внешнего ключа. См. Des c для получения дополнительной информации. - PullRequest
0 голосов
/ 03 августа 2020

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

CREATE TABLE CUSTOMERS (
    CustID varchar(50) NOT NULL,
    Client_Name varchar(50) NOT NULL,
    Client_Address varchar(80) NOT NULL,
    PRIMARY KEY (CustID)
);


CREATE TABLE ORDERS (
    Order_ID VARCHAR(10) NOT NULL,
    Client_NameID varchar(50) NOT NULL,
    Dates varchar(10) NOT NULL,
    PRIMARY KEY (Order_ID),
    FOREIGN KEY (Client_NameID) REFERENCES CUSTOMERS(CustID)
);

SELECT * FROM CUSTOMERS;
SELECT * FROM ORDERS;

DESCRIBE Orders; /*Used to display the Table*/

ALTER TABLE ORDERS ADD Dates VARCHAR(10); /*Used to add columns into the table*/

ALTER TABLE ORDERS DROP COLUMN Date; /*Used to remove column from the table*/

INSERT INTO CUSTOMERS (CustID, Client_Name, Client_Address) VALUES 
    ('168', 'Coventry Building Services', 'Units 2-4, Binley Industrial Estate, CV3 2WL'), /*Used to insert values into the columns*/
    ('527', 'Allied Construction LTD', '34, Lythalls La Industrial Estate, NG18 5AH'),
    ('169', 'Ricoh Builds Ltd', 'Unit 12, Stoneleigh Park, CV8 2UV'),
    ('32', 'British Embassy in Tehran', '198 Ferdowski Avenue Tehran 11316-91144 Iran');

INSERT INTO ORDERS (Order_ID, Client_NameID, Dates) VALUES 
    ('CON-2237', 'Coventry Building Services', '2014-12-14'),
    ('CON-3664', 'Allied Construction LTD', '2015-01-16'),
    ('CON-2356', 'Ricoh Builds Ltd', '2015-02-12'),
    ('CON-1234', 'British Embassy in Tehran', '2015-04-16');


DELETE FROM ORDERS WHERE Client_Name='Coventry Building Services'; /*Used to delete specific 
data from the specific row and column wherever applicable*/

DROP TABLE CUSTOMERS;
DROP TABLE ORDERS;

Ниже приведены таблицы, с которыми я пытаюсь работать, все они будут иметь ключ, который при необходимости связывает их вместе

Таблица CustomerS, которая включает только первичный ключ

Таблица заказов, которая включает первичный и внешний ключи

1 Ответ

0 голосов
/ 03 августа 2020

Проблема заключается в insert s в таблице orders. Your foreign key on Client_NameID references CUSTOMERS (CustID) , but you are giving the CUSTOMERS(Client_Name) вместо этого.

Вы, вероятно, захотите:

INSERT INTO ORDERS (Order_ID, Client_NameID, Dates) VALUES
    ('CON-2237', 'CON-2237', '2014-12-14');
    ('CON-3664', 'CON-3664', '2015-01-16');
    ('CON-2356', 'CON-2356', '2015-02-12');
    ('CON-1234', 'CON-1234', '2015-04-16');

Примечания :

  • Вы можете выполнить все insert s в одном запросе, передав несколько кортежей значений, как показано выше

  • Не хранить даты в виде строк; вместо этого используйте тип данных date, который существует для этой цели. Я изменил запрос, чтобы он использовал правильные литералы даты, которые поместились бы в столбец date

  • , неясно, почему вы хотите использовать одно и то же значение для первичного ключа клиентов и приказы - для меня это усложняет выполнение задач. Я бы рекомендовал просто использовать автоматически увеличивающиеся первичные ключи

...