Привет, я пытаюсь добавить чек в свою БД. В настоящее время я создаю базу данных MySQL для аренды автомобилей (это проект для колледжа), и мое ограничение заключается в том, что человек будет утвержденным клиентом только в том случае, если у него есть номер водителя, поэтому...
CREATE TABLE customers (
customer_id int(50) UNSIGNED ZEROFILL NOT NULL,
fname varchar(20) NOT NULL,
lname varchar(20) NOT NULL,
address varchar(30) NOT NULL,
city varchar(20) NOT NULL,
county ENUM('Armagh','Carlow','Cavan','Clare','Cork','Derry','Donegal','Down','Dublin','Fermanagh','Galway','Kerry','Kildare','Kilkenny','Laois','Leitrim','Limerick','Longford','Louth','Mayo','Meath','Monaghan','Offaly','Roscommon','Sligo','Tipperary','Tyrone','Waterford','Westmeath','Wexford','Wicklow') NOT NULL,
phone int(10) NOT NULL,
email varchar(20) NOT NULL,
payment_method ENUM ('Visa', 'Amex', 'Cash', 'American Express', 'Mastercard') NOT NULL,
status ENUM('Approved','Unapproved'),
driver_no int(10) NOT NULL,
PRIMARY KEY (customer_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Чек будет что-то вроде ... ?
ПРОВЕРИТЬ номер_драйвера ПРИСУТСТВУЕТ?
какова команда, чтобы увидеть, если что-то присутствует. У них должен быть номер водителя, чтобы арендовать автомобиль.
Использование ENMUM для такого списка регионов кажется очень плохой идеей. Добавление нового округа требует изменения вашей схемы, что часто является болезненной операцией. Вместо этого создайте правильную реляционную таблицу. То же самое касается таких вещей, как способы оплаты. Кроме того, попробуйте использовать VARCHAR(255) по умолчанию и ограничивайте это только в том случае, если у вас есть очень веская причина. Для многих вещей, таких как имена и адреса электронной почты, более короткие поля могут создать огромные проблемы для ваших пользователей.
Ваше ограничение int(10) NOT NULL гарантирует, что оно не является нулевым (имеет значение, присвоенное при сохранении/создании) и является целым числом. Вы можете (должны) использовать unsigned int(10), поскольку число, скорее всего, не должно быть отрицательным. Если вам нужна дополнительная проверка достоверности, вы должны сделать это в своем приложении БД при создании/сохранении записи. Предполагая, что вы используете какую-то библиотеку db или активную структуру записи, часто для этого они поддерживают события (например, «при создании» или «при сохранении»). Обратите внимание, что «10» здесь — это просто ширина экрана. Он не применяет диапазон значения.
спасибо, ребята, я до сих пор не знаю, как это сделать, что ты имеешь в виду, тадман
Какую "команду" вы имеете в виду? Почему бы не проверить это условие в вашем коде?
У меня есть водительские права. «Число», написанное на нем, не является целым числом. Значит ли это, что я не могу арендовать машину?
Нико - это моя проблема, я не знаю, как это сделать
клубника - спасибо
Ах, это только для жителей Эйре. Я не знаю, как выглядят цифры RoI, но те, что на севере, должно быть, такие же, как в Великобритании (во всяком случае, на ближайшие несколько дней!)






DROP TABLE IF EXISTS customer;
CREATE TABLE customer
(customer_id SERIAL PRIMARY KEY
,firstname VARCHAR(12) NOT NULL
,licence_no VARCHAR(30) NULL
);
INSERT INTO customer VALUES
(1,'John',NULL),
(2,'Paul','LMW281F'),
(3,'George',NULL),
(4,'Ringo','STAR123');
DROP TABLE IF EXISTS rentals;
CREATE TABLE rentals
(rental_id SERIAL PRIMARY KEY,customer_id INT NOT NULL);
INSERT INTO rentals
SELECT NULL, customer_id FROM customer WHERE firstname = 'John' AND licence_no IS NOT NULL;
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0
SELECT * FROM rentals;
Empty set (0.00 sec)
Вы можете отформатировать такие запросы, сделав отступ в четыре пробела или выбрав и нажав кнопку
{}.