我想从两个不同的表中插入数据:
// 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)。
如果我在这里还没有做好解释,那么我离开模型:
答案 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;