且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何更新主键?

更新时间:2023-02-03 07:54:20

CONSTRAINT TRIP_FKEY1 FOREIGN KEY(LNUM) REFERENCES DRIVER(LNUM)

查看有关MySQL 外键的手册:

Check manual about MySQL foreign key:

RESTRICT:拒绝父表的删除或更新操作.指定RESTRICT(或NO ACTION)与省略ON DELETE或ON UPDATE子句相同.

RESTRICT: Rejects the delete or update operation for the parent table. Specifying RESTRICT (or NO ACTION) is the same as omitting the ON DELETE or ON UPDATE clause.

您没有设置ON DELETEON UPDATE选项,因此默认情况下它们将为RESTRICT.当子表中的行存在时,您将无法更新父表的主键.

You don't set ON DELETE and ON UPDATE options, so they will be RESTRICT by default. And you cannot update parent table primary key while row in child table exists.

您可以这样更改CREATE TABLE:

CREATE TABLE TRIP(
  TNUM DECIMAL(10)  NOT NULL,
  LNUM DECIMAL(8)   NOT NULL,
  REGNUM VARCHAR(10) NOT NULL,
  TRIP_DATE DATE NOT NULL,
  CONSTRAINT TRIP_PKEY PRIMARY KEY(TNUM),
  CONSTRAINT TRIP_FKEY1 FOREIGN KEY(LNUM) REFERENCES DRIVER(LNUM) ON UPDATE CASCADE
  CONSTRAINT TRIP_FKEY2 FOREGIN KEY(REGNUM) REFERENCES TRUCK(REGNUM) ON UPDATE CASCADE);

并查询

UPDATE TRUCK SET REGNUN = 'PKR856' WHERE REGNUM = 'SST005';

将更改两个表中的键,分别是truck中的主键和trip中的外键.

will change keys in both tables, primary key in truck and foreign key in trip.