2つのMySQLテーブルがあります(これらは粗いテーブルです)LocationはDeliveryの複数値属性なので、自分のテーブル外部キーのIDとして変数を使用して2つのテーブルにデータを挿入
CREATE TABLE `Delivery` (
`Date` varchar(10) NOT NULL,
`Time` varchar(10) NOT NULL,
`OrderTotal` float NOT NULL,
`DeliveryID` int(11) PRIMARY KEY AUTO_INCREMENT ,
`Tip$` float NOT NULL,
`Username` varchar(50) NOT NULL
)
そして
CREATE TABLE `Location` (
`DeliveryID` int(10) NOT NULL,
`APT` varchar(10) DEFAULT NULL,
`Street` varchar(50) NOT NULL,
`Address` int(20) NOT NULL,
) FOREIGN KEY ('DeliveryID') REFERENCES `Delivery` (`DeliveryID`);
だから私は何をしたい私は、自身のそれぞれのデータと配信に挿入、および配信に独自のマッチングIDでロケーションテーブルにデータを追加すると言っています明らかに。多値属性をそれぞれのテーブルに分割するように言われました。それでは、私がやっていることは
INSERT INTO Delivery
VALUES (DEFAULT, '12345','10:53am','admin','100','10');
SELECT @Var := Last_INSERT_ID();
INSERT INTO Location
VALUES (@Var, '1234','address',DEFAULT);
である私の質問は、この悪い習慣はありますか?または、これを回避する方法はありますか?その中にすべてのロケーションデータが含まれているより大きなDeliveryテーブルを持つだけですか?私の恐れは、どういうわけか、このデータベースの複数のユーザーが何らかの方法でDeliveryテーブルに挿入して、テーブルからMAX(DeliveryID)を取得するのに0.0005秒で同期できなくなるということです。このサイズのプロジェクトでは問題ではないことは分かっていますが、これが大規模なプロジェクトであれば、私が言及したようにエラーが発生する可能性がありますか?
'SET @ Var = LAST_INSERT_ID();'を使用できますか? –
私はそれを変更しました。MAX(ID)を使用する場合と同じ結果が得られます。 – Dringo