Methoden zur Verwendung von Prüfeinschränkungen in MySQL: 1. Wenn der Feldbereich, auf den CHECK-Einschränkungen festgelegt werden sollen, klein ist und es einfacher ist, alle Werte aufzuzählen, kann der Typ des Felds auf Aufzählungstyp festgelegt werden oder Typ festlegen. 2. Wenn der Feldbereich, für den CHECK-Einschränkungen festgelegt werden müssen, groß ist und es schwierig ist, alle Werte aufzuzählen, verwenden Sie Trigger anstelle von Einschränkungen, um die Datengültigkeit zu erreichen.
In einigen Fällen müssen Felder innerhalb eines bestimmten Bereichs eingegeben werden,
Beispiel: Als Geschlecht kann nur „männlich“ eingegeben werden ' oder 'weiblich' ', der Saldo kann nur größer als 0 und andere Bedingungen sein,
Zum Beispiel: Sie können festlegen, dass die Postleitzahlenspalte der Autorentabelle nur die Eingabe von sechsstelligen Postleitzahlen zulässt.
Zusätzlich zur programmgesteuerten Steuerung können wir auch CHECK-Einschränkungen verwenden, um Daten zu standardisieren.
Allerdings:
Alle MySQL-Speicher-Engines unterstützen keine Prüfeinschränkungen, ignorieren sie jedoch beim Einfügen von Daten, sodass die Prüfung nicht funktioniert.
Zwei Möglichkeiten, dieses Problem zu lösen:
1. Wenn der für CHECK-Einschränkungen festzulegende Feldbereich klein ist und es einfacher ist, alle Werte aufzulisten, können Sie dies tun Bedenken Sie, dass der Typ dieses Felds auf den Aufzählungstyp enum() oder den Sammlungstyp set() festgelegt ist.
Zum Beispiel kann das Feld „Geschlecht“ auf diese Weise festgelegt werden. Das Einfügen anderer Werte als des Aufzählungswerts ist nicht zulässig.
CREATE TABLE `Student` ( `Sno` char(8) NOT NULL, `Sname` varchar(10) NOT NULL, `Sex` enum('男','女') NOT NULL DEFAULT '男', `Age` tinyint(4) NOT NULL DEFAULT '20', `Phonenumber` char(12) DEFAULT NULL, `Sdept` varchar(20) NOT NULL, PRIMARY KEY (`Sno`), UNIQUE KEY `Phonenumber` (`Phonenumber`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2. Wenn der Feldbereich, für den CHECK-Einschränkungen festgelegt werden müssen, groß ist und es schwierig ist, alle Werte wie Ganzzahlen oder einen bestimmten Bereich aufzulisten, können anstelle von Einschränkungen nur Trigger verwendet werden um Datenvalidität zu erreichen.
DELIMITER $ create trigger studentcheck before insert on Student for each row begin if new.Age<15 or new.Age>30 then set new.Age=20;end if; end $ DELIMITER ;
Test:
mysql> insert into Student(Sno,Sname,Sex,Age,Phonenumber,Sdept) values('5','Joe','m',0,'12345243912','CS'); ERROR 1265 (01000): Data truncated for column 'Sex' at row 1 mysql> insert into Student(Sno,Sname,Sex,Age,Phonenumber,Sdept) values('5','Joe','男',0,'12345243912','CS'); Query OK, 1 row affected (0.00 sec) mysql> select * from Student; +-----+-------+-----+-----+-------------+-------+ | Sno | Sname | Sex | Age | Phonenumber | Sdept | +-----+-------+-----+-----+-------------+-------+ | 4 | nancy | m | 0 | 12345243965 | CS | | 5 | Joe | 男 | 20 | 12345243912 | CS | +-----+-------+-----+-----+-------------+-------+ 2 rows in set (0.00 sec)
Es ist ersichtlich, dass jetzt Geschlecht zwischen „männlich“ und „weiblich“ ausgewählt werden muss, andernfalls schlägt die Einfügung fehl, wenn das Alter nicht der Spezifikation entspricht Abhängig vom Vorhandensein des Triggers wird dieser automatisch auf den Standardwert 20 gesetzt.
Dies kann das Problem ungültiger Prüfeinschränkungen lösen.
Das obige ist der detaillierte Inhalt vonSo verwenden Sie Prüfeinschränkungen in MySQL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!