0

したがって、テーブルから値を選択し、挿入時に同じテーブルの新しい行の値として使用するように少し変更する必要があります。下記参照:

INSERT INTO reservationbody(
    reservationid,
    driverid,
    tripnumber,
    fromlocation,
    tolocation
)
VALUES(
    1,
    2,
    (
        SELECT
           MAX(tripnumber) + 1
        FROM reservationbody
        WHERE reservationid = 1
    ),
    'here',
    'there'
)

次のエラーが表示されます。

FROM 句で更新対象のテーブル 'reservationbody' を指定することはできません

私は他の質問を見て、このエラーに関する多くの質問を見つけましたが、それらはすべて更新と削除に関するものであり、すべて既存の PK 値が必要です。挿入を扱うものはありません。

基本的に私がここで期待しているのは、値4SELECT MAX(tripnumber) FROM reservationbody where reservationid = 1を返す場合、挿入は値5の新しい行を追加する必要があるということですtripnumber

これを達成する方法を誰かが提案できますか?

4

1 に答える 1

2

試しましたか(MS SQLでこれを実行できることを知っています):

INSERT INTO reservationbody(reservationid,driverid,tripnumber,
                                       fromlocation,tolocation)
SELECT 1, 2, MAX(tripnumber) + 1, 'here', 'there'
FROM reservationbody
WHERE reservationid = 1
于 2012-09-10T09:26:24.733 に答える