2017-10-12 163 views
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'; 

它給我不能刪除或更新父行,外鍵約束失敗,我不明白爲什麼...有人可以幫我解決嗎?

回答

1

如果要更新另一個表外鍵約束中的字段,則必須將「On update cascade」屬性設置爲外鍵。

如果你不能改變表結構,檢查這個答案: How to update foreign key value in mysql database

+0

如果我更改表上的內容受到限制?有任何其他方法來做到這一點? –

+0

選中此項[如何更新mysql數據庫中的外鍵值](https://stackoverflow.com/questions/7541446/how-to-update-foreign-key-value-in-mysql-database) – Nenos

+0

我不明白爲什麼我們需要使用set外鍵chceck = 0和1 ..但是它的work..thx用於鏈接man –

相關問題