8

mysqlで2つの列値を組み合わせた列を持つテーブルを作成することは可能ですか?このようなもの:

create table test1 (
    number1 int,
    number2 int,
    total int DEFAULT (number1+number2)
);

またはこのように:

CREATE TABLE `Result` (
    `aCount` INT DEFAULT 0,
    `bCount` INT DEFAULT 0,
    `cCount` =  `aCount` + `bCount`
);
4

4 に答える 4

15

これを正確に行うことはできませんが、それらを組み合わせたクエリに基づいてビューを作成できます。

CREATE VIEW `my_wacky_view` AS
SELECT `number1`, `number2`, `number1` + `number2` AS `total`
FROM `test1`;

WHERE句で結合されたデータを参照するクエリを大量に実行する場合を除いて、結合されたデータを実際にテーブルに格納することは避けます。

于 2011-07-24T07:35:24.313 に答える
6

テーブルにトリガーを作成して、MySQLがtest1テーブルでINSERTが発生するたびにその列の値を計算して自動的に挿入するようにすることができます。テーブルを作成します。

create table test1 (
    number1 int,
    number2 int,
    number3 int
);

次に、トリガーを作成します

CREATE TRIGGER triggername AFTER INSERT
ON test1
FOR EACH ROW
UPDATE test1 SET NEW.number3=NEW.number1+NEW.number2

トリガーに関するMySQLドキュメント:http: //dev.mysql.com/doc/refman/5.0/en/create-trigger.html

行にUPDATESが発生することが予想される場合は、必ずONUPDATEトリガーも追加してください。

于 2011-07-24T07:37:24.343 に答える
4

私もこの問題を抱えていました。ここでのエドガー・ベラスケスの答えとこの質問への答えから、私はこの呪文に出くわしました:

CREATE TRIGGER insert_t BEFORE INSERT
ON test1
FOR EACH ROW
SET NEW.number3=NEW.number1+NEW.number2;

CREATE TRIGGER insert_t_two BEFORE UPDATE
ON test1
FOR EACH ROW
SET NEW.number3=NEW.number1+NEW.number2;

これは、MySQL5.6.22で機能します。

于 2015-02-26T20:43:08.610 に答える
0

少し修正:

CREATE TRIGGER triggername BEFORE INSERT
ON test1
FOR EACH ROW
SET NEW.number3=NEW.number1+NEW.number2
于 2013-05-27T11:33:11.163 に答える