Para testar esse comando criei as tabelas abaixo e inseri os valores:
-- Criação da tabela clientes
CREATE TABLE clientes (
id_cliente INT PRIMARY KEY,
nome VARCHAR(100) NOT NULL
);
-- Criação da tabela pedidos com chave estrangeira
CREATE TABLE pedidos (
id_pedido INT PRIMARY KEY,
id_cliente INT,
data_pedido DATE,
FOREIGN KEY (id_cliente) REFERENCES clientes(id_cliente) ON DELETE CASCADE
);
-- Inserindo dados na tabela clientes
INSERT INTO clientes (id_cliente, nome) VALUES (1, 'João da Silva');
INSERT INTO clientes (id_cliente, nome) VALUES (2, 'Maria Oliveira');
-- Inserindo dados na tabela pedidos
INSERT INTO pedidos (id_pedido, id_cliente, data_pedido) VALUES (101, 1, '2024-08-01');
INSERT INTO pedidos (id_pedido, id_cliente, data_pedido) VALUES (102, 1, '2024-08-02');
INSERT INTO pedidos (id_pedido, id_cliente, data_pedido) VALUES (103, 2, '2024-08-03');
Mas quando executo o código para deletar o cliente de id=1 da tabela clientes, ele deleta, mas na tabela pedidos, ele permanece. O que estou fazendo de errado?
DELETE FROM clientes WHERE id_cliente = 1;