从两个表中导入数据SQL + PK / FK

时间:2018-12-17 17:13:38

标签: sql database postgresql

我想从两个不同的表中插入数据:

//  somecode
//  .....
//  .....
onAddImage() {
    let viewModel = new AddDisplayImageModalViewModel("Ajouter une image à la liste pour " + his.selected.airline().name.peek(), this.onSaveImage.bind(this), null);
    Modal.launch(viewModel, "add-display-image-component-template");
    this.data.displayImages.selected(this.selected.airline().name.peek());
}

onSaveImage(newImageFileName) {
    try {
        let currentAirlineCode = this.selected.airline().oaci.peek();
        let x = newImageFileName.lastIndexOf('\\');
        let code = currentAirlineCode + "_" +
            newImageFileName.substring(x + 1);
        let shortCode = code.substring(4, code.lastIndexOf(".jpg"))

        let promise = this._http.post({
            url: "api/displayImage/" + currentAirlineCode,
            data: {
                Filename: code,
                Label: shortCode
            }
        });

        let promiseImage = this._http.get({
            url: "api/displayImage/" + currentAirlineCode
        });

        promiseImage.then(() => {
            // update data on model
            // reload all image and bind it to the control
            // select last item added in the dropdown list  

        });
    } catch (e) {}
}

客户ID PhoneID PK / FK ,而 PhoneID 在表 Person 中强>。
其他值在表 CustomerOrders 中。

所以我想将PhoneID插入到CustomerID中,并将其余的CustomerOrders数据插入其他变量中。

我已经提出了这个建议:

DROP TABLE IF EXISTS Customer CASCADE;
CREATE TABLE Customer (
CustomerID INTEGER,
CompanyName VARCHAR(255),
ContactName VARCHAR(255),
ContactTitle VARCHAR(255),
Address VARCHAR(255),
City VARCHAR(255),
Region VARCHAR(255),
PostalCode VARCHAR(255),
Country VARCHAR(255),
PRIMARY KEY (CustomerID),
FOREIGN KEY (CustomerID) REFERENCES Person(PhoneID)
);

但是当我编译时它说:

  

[2018-12-17 18:03:26] [23505]错误:重复的密钥违反了唯一性   限制«customer_pkey»

     

[2018-12-17 18:03:26]详细信息:密钥已经存在(客户编号)=   (1)。


如果我在这里还没有做好解释,那么我离开模型:

model

1 个答案:

答案 0 :(得分:1)

您的插入查询应该在两个表之间至少具有一个联接,直到您不想使其交叉为止。无论如何,由于插入的CustomerID已经存在,您遇到了问题。

    INSERT INTO Customer(CustomerID, CompanyName, ContactName, ContactTitle, Address, City, Region, PostalCode, Country) 
    SELECT PhoneID, CompanyName, ContactName, ContactTitle, Address, City, Region , PostalCode, Country
    FROM Person p 
    JOIN CustomerOrders c
    ON p.PhoneID = c.CustomerID;