0
假設我們有系統,子系統和設備。他們每個人都在0 .. *關係。 下面是表(屬性不顯示,爲了簡化)插入分層相關數據
CREATE TABLE system(
sid INT NOT NULL AUTO_INCREMENT,
sysident VARCHAR(80) NOT NULL,
//...
cid INT NOT NULL, //Foreign Key to Customer
PRIMARY KEY(sid));
CREATE TABLE subsystem(
subsid INT NOT NULL AUTO_INCREMENT,//...
subsident INT NOT NULL,
sid INT NOT NULL, //systems foreign key
PRIMARY KEY(subsid));
CREATE TABLE device(
did INT NOT NULL AUTO_INCREMENT,//...
dident INT NOT NULL,
subsid INT NOT NULL, //subsystems foreign key
PRIMARY KEY(did));
現在假設有其中sb可以上傳的數據的接口。數據構造(JSON)這樣
{
"systemname": "testsystem", //system.systemname
"deviceinfos": [
{
"id": "2-90" //"subsystem.subsystemident-device.deviceident"
}]
}
任務是在表中插入或更新的數據。 (也許一些元數據改變設備testsystem-2-90(此IDENT不是唯一的表中)
做法是:?
INSERT INTO system(sid, sysident, cid) VALUES
(
(SELECT sid FROM (SELECT DISTINCT sid FROM user
JOIN customer on user.cid = customer.cid JOIN system
ON system.cid = customer.cid
WHERE customer.cid = 1 and system.sbid = 1 as a), 'systemsname', 1)
) ON DUPLICATE KEY UPDATE // some metainfo
有沒有辦法讓這個簡單的對於系統,插入其沒有問題/正確更新這一點。但對於子系統和器件方面變得越來越大,我是謹慎的做法。
有什麼建議?