0

私は既存のデータベースの実装 (SQL および MySQL) に取り組んでいます。現在、1 つの列のデータ型を から に変更する必要がありsmallintますmediumint。これは問題にはなりませんが、問題は実装での更新の処理方法です。

起動するたびに、プログラムは単純な MySQL ステートメント ( などSELECT xyz FROM 'tablename') を実行して、更新が必要かどうかをテストします。ステートメントがエラーをスローした場合 ('xyz' が存在しない場合の例のように)、更新自体が実行されます (この例では、'xyz' が作成されます)。したがって、必要なのは、列のデータ型が の場合にエラーをスローするステートメントですsmallint。65535 より大きい整数をデータベースに書き込むことしかできませんが、もちろんこれはオプションではありません。

そのような可能性がなく、実際に更新の処理方法を変更する必要がある場合、列「xyz」のデータ型がsmallint.

ありがとう。

4

2 に答える 2

0

空の結果セットはエラーとしてカウントされますか? 次に、使用できます

SHOW COLUMNS FROM tablename WHERE Field = "xyz" AND Type = "mediumint(9)"
于 2012-09-23T13:06:47.500 に答える
0

例外を使用してフロー制御 (ロジック) を処理するのは悪い設計です。例外は「例外」のためのものです。

例外を必要としないように設計を変更することを検討してください。たとえば、カタログにクエリを実行して、必要なものを見つけます。

select * from information_schema.columns
where tablename = 'foo'
and columnname = 'bar'

知っておくべきことはすべてinformation_schema表に記載されているようです。

于 2012-09-23T14:21:55.083 に答える