0
CREATE TABLE LOCATION(
street_address VARCHAR(40) NOT NULL,
postal_code VARCHAR(12) NOT NULL,
city VARCHAR(30) NOT NULL,
state_province VARCHAR(25) NULL,
country_name VARCHAR(40) NOT NULL,
CONSTRAINT LOCATION_PK PRIMARY KEY(street_address, postal_code, city,
country_name),
CONSTRAINT LOCATION_CK UNIQUE(street_address, city, state_province,
country_name),
CONSTRAINT LOCATION_FK FOREIGN KEY(country_name)
REFERENCES COUNTRY(country_name));
CREATE TABLE DEPARTMENT(
department_name VARCHAR(30) NOT NULL,
street_address VARCHAR(40) NOT NULL,
postal_code VARCHAR(12) NOT NULL,
city VARCHAR(30) NOT NULL,
country_name VARCHAR(40) NOT NULL,
manager_id DECIMAL(6) NULL,
CONSTRAINT DEPARTMENT_PK PRIMARY KEY(department_name),
CONSTRAINT DEPARTMENT_FK1 FOREIGN KEY(street_address, postal_code, city,
country_name)
REFERENCES LOCATION(street_address, postal_code, city, country_name));
CREATE TABLE COUNTRY(
country_name VARCHAR(40) NOT NULL,
region_name VARCHAR(25) NOT NULL,
CONSTRAINT COUNTRY_PK PRIMARY KEY(country_name),
CONSTRAINT COUNTRY_FK FOREIGN KEY(region_name)
REFERENCES REGION(region_name));
正如您可以從上面看到的3表中,我需要更新我的部門會計已移到新的位置。新地址是馬來西亞八打靈再也梳邦再也3梳邦1號。郵政編碼是31546.我已經加入這3張表,但它仍然無法工作。爲什麼?這裏是我的SQL更新代碼:mysql無法刪除或更新父行:外鍵約束失敗
UPDATE DEPARTMENT a
INNER JOIN LOCATION b ON a.street address = b.street address
AND a.postal_code = b.postal_code
AND a.city=b.city
AND a.country_name = b.county_name
JOIN COUNTRY c
on b.country_name = c.country_name
SET a.street_address = 'subang 1 ,subang jaya ',
b.street_address = 'subang 1 ,subang jaya ',
a.postal_code = '31546',
b.postal_code = '31546',
a.city = 'PETALING JAYA ',
b.city = 'PETALING JAYA ',
a.country_name = 'MALAYSIA',
b.country_name = 'MALAYSIA',
c.country_name = 'MALAYSIA'
WHERE DEPARTMENT = 'Accounting';
它給我不能刪除或更新父行,外鍵約束失敗,我不明白爲什麼...有人可以幫我解決嗎?
如果我更改表上的內容受到限制?有任何其他方法來做到這一點? –
選中此項[如何更新mysql數據庫中的外鍵值](https://stackoverflow.com/questions/7541446/how-to-update-foreign-key-value-in-mysql-database) – Nenos
我不明白爲什麼我們需要使用set外鍵chceck = 0和1 ..但是它的work..thx用於鏈接man –