の値にフィールドを更新するために、私は3つの列で一つのテーブルを持って言う:主id
キー、group_id
int、value
varchar。私はそのようなgroup_id
に挿入するとMySQLのトリガーは、私が挿入されたレコードに対して次の操作を実行するトリガーを持っていると思いID
:
INSERT INTO table(value, group_id) VALUES ('a', 10)
私が持っているしたいと思います:
id | group_id | value
---+----------+------
1 | 10 | a
が、私はgroup_id
を省略:
INSERT INTO table(value) VALUES ('b')
それが自動的にする必要がありますこのレコードのid
に設定します。
id | group_id | value
---+----------+------
2 | 2 | b
トリガーでも可能ですか? (私は挿入するが、トリガーが立派になりた後にレコードを更新することができます知っている。)
を試してみよう。 2016 –
@AA_PVであっても、これはOracleのように独立したシーケンスオブジェクトによって解決できます。これは、2003年からMySQLで公開されている機能リクエストです:https://bugs.mysql.com/bug.php?id=1625しかし、Oracleでは、シーケンスを使用するためには、アプリケーションコードで呼び出す必要があります。自動インクルード主キーを持つテーブルに*すべての* INSERTのコードを記述することを意味します。あるいは、*そのようなテーブルごとにトリガーを書く。 MySQLユーザは非常に多くのトリガをスキップすることができ、単にカラムオプションとして 'AUTO_INCREMENT'を宣言するのが好きです。 –
MySQLでは2つのAUTO_INCREMENTカラムは使用できません。私はhttp://stackoverflow.com/a/7345183/4411645に似た何かができると思うが。また、ネストされたクエリを避けるために、おそらくそれはアプリケーションコードでも維持できますが、それはさらに安全ではないかもしれません。 –