27 lines
849 B
SQL
27 lines
849 B
SQL
-- Remove invalid record types before applying constraint
|
|
DELETE FROM dns_records WHERE record_type NOT IN ('A', 'AAAA', 'CNAME', 'TXT');
|
|
|
|
-- Now apply the constraint
|
|
ALTER TABLE dns_records DROP CONSTRAINT dns_records_record_type_check;
|
|
|
|
-- MySQL doesn't support table-level CHECK constraints, using trigger instead
|
|
DELIMITER //
|
|
CREATE TRIGGER check_record_type_before_insert
|
|
BEFORE INSERT ON dns_records
|
|
FOR EACH ROW
|
|
BEGIN
|
|
IF NEW.record_type NOT IN ('A', 'AAAA', 'CNAME', 'TXT') THEN
|
|
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Invalid record type';
|
|
END IF;
|
|
END;
|
|
//
|
|
CREATE TRIGGER check_record_type_before_update
|
|
BEFORE UPDATE ON dns_records
|
|
FOR EACH ROW
|
|
BEGIN
|
|
IF NEW.record_type NOT IN ('A', 'AAAA', 'CNAME', 'TXT') THEN
|
|
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Invalid record type';
|
|
END IF;
|
|
END;
|
|
//
|
|
DELIMITER ; |