INSERT クエリで、入力した 2 つの値を減算して、テーブルに挿入できる 3 番目の値を作成することは可能ですか? それが理にかなっていれば...
例えば
INSERT INTO table1 (column1, column2, column3)
VALUES ('50', '25', column1 - column2)
INSERT クエリで、入力した 2 つの値を減算して、テーブルに挿入できる 3 番目の値を作成することは可能ですか? それが理にかなっていれば...
例えば
INSERT INTO table1 (column1, column2, column3)
VALUES ('50', '25', column1 - column2)
INSERT INTO table1 (column1, column2, column3)
(select ('50', '25', column1 - column2) from table1 where conditions)
これはサンプル クエリです。それが役に立てば幸い!
複雑:
INSERT INTO table1 (column1,column2,column3)
select column1,column2,column1-column2
from
(select 50 as column1,
25 as column2
) t
同じ句から他の列を参照できないためSELECT
、サブクエリとして実行する必要があります。int
また、文字列ではなくリテラルを使用するように切り替えました。そうしないと、減算を頭の中で意味を成すことができないからです。
Table Value Constructorを使用して行うこともできます。
INSERT INTO table1 (column1,column2,column3)
select column1,column2,column1-column2
from
( VALUES (50, 25)
) AS t (column1, column2);
ただし、私のコメントに示されているように、関係が常に保持される場合は、table1 を次のように作成します。
CREATE TABLE table1 (
column1 int not null,
column2 int not null,
column3 as column1 - column2
--More columns
)
そうすれば、column3
値は常に正しいからです。
「INSERTINTO」を使用すると、次のようになります。
INSERT INTO Table1Name (column1, column2, column3,)
(select 'X', 'Y', X - Y as Z)
INSERTINTOのその他の例を含むSQLAuthorityへのリンクは次のとおりです。
値を減算する関数を作成し、この関数を挿入で使用できます。これは、そのようなことを行う正しい方法です:
INSERT INTO table1 (column1, column2, column3)
(select ('50', '25', your_function() ) from table1 where conditions)
/
もう 1 つの方法は、テーブルにトリガーを追加することです。この場合、データの挿入時に、3 番目の列が最初の 2 列の差で更新されます。