0

I can not find this any where (I am probably not asking the right questions). Would someone please point me in the right direction.

I am using a 2 column composite primary key in MySQL. I would like to display that value as a default value in a 3rd column in the same table and in another table.

Col_1 value = ABC, 
Col_2 value = 123, 
PK          = ABC123, 

Col_3 default value = ABC123 

Would anyone be able to explain how to do this?

I would prefer not to do this with a trigger or an insert statement if possible.

Thanks,

Ted

4

3 に答える 3

1

値を実際に列に含める必要がある状況は多くありません。データのフェッチに使用するselectステートメント、またはphp、ruby、またはデータの表示に使用するコードに値を作成することで、同じ効果を何度も得ることができます。

例えば:

SELECT Col_1, Col_2, CONCAT(NEW.Col_1,NEW.Col_2) as Col_3
FROM my_table;

これにより、トリガーやその他の高度なSQLトリックを回避しながら、問題を解決できます。

誰かがCol_1またはCol_2の値を変更したい場合にも、これはより良いアプローチだと思います。これらの値の1つを変更した場合は、2つの組み合わせを保持する列も更新する必要があります。それは物事を必要以上に複雑にします。

何らかの理由でデータベーステーブルに含まれている必要がある場合は、お知らせください。

于 2012-05-10T04:50:20.187 に答える
0

トリガーを使用します。これはまだテストしていませんが、試してみる価値はあります。

CREATE TRIGGER `auto_default` 
BEFORE INSERT ON `table` FOR EACH ROW 
SET NEW.Col_3=CONCAT(NEW.Col_1,NEW.Col_2);
于 2012-05-10T04:39:37.807 に答える
0

私はこれに出くわしていません。おそらく、トリガーを使用するか(これは選択ではないことを示します)、テーブルへの挿入を実行するアプリケーションにトリガーを組み込む必要があります。

MYSQLの資料をスキャンすると、「デフォルト値は定数でなければならず、関数や式にすることはできません」と明確に述べられています。

参照用「http://dev.mysql.com/doc/refman/5.6/en/data-type-defaults.html」

トリガーを使用する場合、Jonasによってサジェストされたトリガーが機能するはずです。

于 2012-05-10T04:42:22.757 に答える