← К оглавлению занятия

🐛 Типичные ошибки

⚡ Кратко: ошибки

  • Забыть WHERE в UPDATE.
  • Нарушить CHECK-ограничение отрицательной ценой или остатком.
  • Пропустить NOT NULL у обязательного поля.
  • Создать View с уже существующим именем.
  • Неправильно указать тип данных (например, INT для цены).
1

Ошибка: UPDATE без WHERE

Без условия остаток уменьшится у всех товаров.

-- Опасно
UPDATE products SET stock_quantity = stock_quantity - 3;

-- Правильно
UPDATE products
SET stock_quantity = stock_quantity - 3
WHERE product_id = 1;
2

Ошибка: нарушение CHECK

Отрицательная цена или остаток вызовут ошибку.

-- Ошибка: price не проходит CHECK (price >= 0)
INSERT INTO products (product_name, price, stock_quantity)
VALUES ('Broken Item', -10.00, 5);

-- Ошибка: stock_quantity не проходит CHECK (stock_quantity >= 0)
INSERT INTO products (product_name, price, stock_quantity)
VALUES ('Missing Item', 10.00, -5);
3

Ошибка: пропуск NOT NULL

product_name обязателен. Вставка без него вернёт ошибку.

-- Ошибка: product_name NOT NULL
INSERT INTO products (price, stock_quantity)
VALUES (100.00, 10);
4

Ошибка: View уже существует

Повторное создание View без замены вызовет ошибку.

-- Ошибка, если View уже есть
CREATE VIEW product_overview AS SELECT * FROM products;

-- Правильно
CREATE OR REPLACE VIEW product_overview AS
SELECT product_name, category, price * stock_quantity AS stock_value
FROM products;
5

Ошибка: неверный тип данных для цены

Для денежных значений используйте DECIMAL, а не INT или FLOAT, чтобы избежать проблем с округлением.

-- Не рекомендуется
price INT

-- Рекомендуется
price DECIMAL(8, 2)