У меня есть две таблицы триггера, который автоматически заполняет 2-ую таблицу.Как я могу получить данные, чтобы избежать нулевых значений для атрибута автоматически? - PullRequest
0 голосов
/ 26 декабря 2018

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

CREATE TABLE `departments` (
department_id INT(2) NOT NULL AUTO_INCREMENT,
department_name VARCHAR(30) NOT NULL,
PRIMARY KEY (department_id),
UNIQUE (department_name));

CREATE TABLE `designations_of_departments` (
department_id INT(2) NOT NULL AUTO_INCREMENT,
designation_1 VARCHAR(30),
designation_2 VARCHAR(30),
designation_3 VARCHAR(30),
designation_4 VARCHAR(30),
designation_5 VARCHAR(30),
FOREIGN KEY (department_id)
    REFERENCES departments (department_id)
    ON DELETE CASCADE);

delimiter $$
create trigger trigger_1 after insert on departments
for each row begin 
insert into designations_of_departments(department_id, designation_1, designation_2, designation_3, designation_4, designation_5) 
values (new.department_id, null, null, null, null, null);
end$$ delimiter ;

Я пытался выполнить этот запрос, но он по-прежнему показывает нулевые значения.

select * from designations_of_departments
where not (designation_1 <=> null and designation_2 <=> null and
designation_3 <=> null and designation_4 <=> null and designation_5 <=>
null) and department_id=1;

Пример:

INSERT INTO `departments` VALUES (1,'HRM'), (2,'Accounting')(3,'Engineering');

UPDATE designations_of_departments SET 
designation_1 = 'Senior HR',
designation_2 = 'HR',
designation_3 = 'Junior HR' WHERE department_id = 1;

Это то, что я пробовал согласно предложению в комментариях:

select * from designations_of_departments
where designation_1 is not null
 and designation_2 is not null
 and designation_3 is not null
 and designation_4 is not null
 and designation_5 is not null
 and department_id=1;
...