Eu tenho a seguinte tabela:
-- laravel.spies definition
CREATE TABLE `spies` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`surname` varchar(255) NOT NULL,
`agency` varchar(255) NOT NULL DEFAULT 'NO-AGENCY',
`country_of_operation` varchar(255) DEFAULT NULL,
`birth_date` date NOT NULL,
`death_date` date DEFAULT NULL,
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `unique_spy` (`name`,`surname`,`agency`,`birth_date`),
) ENGINE=InnoDB AUTO_INCREMENT=2
DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
E eu inseri a seguinte restrição também:
ALTER TABLE spies add constraint
death_date_valid check ( spies.death_date = NULL
|| spies.death_date > spies.birth_date );
E A instrução de inserção a seguir insere um registro. No meu caso, não deve ser capaz de fazer isso:
INSERT INTO spies (name,surname,birth_date,death_date)
VALUES ('Namae','Myoji','1980-12-01','1970-12-03');
Mas inseriu o valor em seu lugar. Você sabe por quê?
O que eu quero alcançar é que a data da morte terá:
- valor nulo
- qualquer valor maior que birth_date
= NULL
não é o que você pensa. DigaIS NULL
em vez disso.