sql >> Databasteknik >  >> RDS >> Mysql

INNODB kaskad vid radering och uppdatering

Du verkar bara vilja ha lite vägledning. Så jag ska försöka fatta mig kort.

$sql = "CREATE TABLE customerGroups (
   customer_id int(11) NOT NULL,
   group_id int(11) NOT NULL,
   PRIMARY KEY (customer_id, group_id),
   CONSTRAINT customers_customergroups_fk
     FOREIGN KEY (customer_id)
     REFERENCES customers (customer_id) 
     ON DELETE CASCADE,
   CONSTRAINT groups_customergroups_fk
     FOREIGN KEY (group_id)
     REFERENCES groups (group_id) 
     ON DELETE CASCADE
)ENGINE = INNODB;";

Du behöver bara id-nummer när identitet är svår att spika. När du har att göra med människor är identiteten svår att sätta fast. Det finns massor av människor som heter "John Smith".

Men du har att göra med två saker som redan har identifierats. (Och identifierad med id-nummer, av alla saker.)

Kaskadraderingar är vettigt. Det är relativt sällsynt att överlappa uppdateringar av ID-nummer; de antas aldrig förändras. (Den främsta anledningen till att Oracle DBA:er insisterar på att primärnycklar alltid måste vara ID-nummer, och att de aldrig förändring beror på att Oracle inte kan kaskaduppdateringar.) Om några id-nummer senare behöver för att ändra av någon anledning kan du ändra tabellen så att den inkluderar PÅ UPPDATERING CASCADE.

$sql = "CREATE TABLE groups
(
group_id int(11) NOT NULL AUTO_INCREMENT,
group_title varchar(50) NOT NULL UNIQUE,
group_desc varchar(140),
PRIMARY KEY (group_id)
)ENGINE = INNODB;";

Notera den ytterligare unika begränsningen på group_title. Du vill inte tillåta något liknande (nedan) i din databas.

group_id  group_title
--
1         First group
2         First group
3         First group
...
9384      First group

Du kommer att vilja bära den typen av förändringar genom alla dina tabeller. (Förutom kanske din kundtabell.)




  1. Hur frågar jag med fält i den nya PostgreSQL JSON-datatypen?

  2. Övervakning &Ops Management av MySQL 8.0 med ClusterControl

  3. Lösning av felaktig teckenkodning vid visning av MySQL-databasresultat efter uppgradering till PHP 5.3

  4. Genomgång:Konfigurera SQL Server High Availability