我有下表:
-- 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;
我还插入了以下约束:
ALTER TABLE spies add constraint
death_date_valid check ( spies.death_date = NULL
|| spies.death_date > spies.birth_date );
并且以下插入语句插入一条记录。就我而言,它不应该能够这样做:
INSERT INTO spies (name,surname,birth_date,death_date)
VALUES ('Namae','Myoji','1980-12-01','1970-12-03');
但它却插入了值。你知道为什么吗?
我想要实现的死亡日期将有:
- 空值
- 任何大于birth_date的值
= NULL
不是你想的那样。而是说IS NULL
。