私はこのように、アップロードされたファイルの内容を保存するためのMySQLのテーブルを持っている:MySQLはINSERTの同じテーブルの他の列のCONCATとして列を設定しますか?
CREATE TABLE files (
file_id bigint not null primary key auto_increment,
file_name text,
file_path text,
file_extension varchar(15),
file_link text);
ディスク上のファイルの実際の名前は、私はレコードを挿入すると、テーブルによって生成されたfile_id
に設定されている - ただしので、私はあらゆる種類の詳細を記録することができますが、データベースは実際にこの時点でファイルが呼び出されたことを実際には知りません。
カラムを設定する直後に別のUPDATE
文を実行するのは簡単ですが、ここでもう少し優雅なやり方があるのかどうか疑問に思っていますか?直後に別のUPDATE
ステートメントを実行することなく、CONCAT(file_path, file_id, file_extension)
:私がやりたい何
はfile_link
の値は自動的にこれにINSERT
に設定されています。
私はこれをどうやって行うことができるか知っていますか?それが悪い考えであれば、なぜ説明できますか?
P.S私は違いがある場合、これらのステートメントを実行するためにPHPを使用しています。
なぜ冗長データを挿入するのですか? – ethrbunny
@etherbunnyは主にSELECTステートメントの複雑さを減らすために、私は複数の場所で使用するつもりですが、file_linkとfile_extensionの列を削除する可能性が高くなりますインサート。しかし、はい、あなたは正しいです、それは冗長です – jammypeach
私は反対をする傾向があるだろう:file_linkを削除し、file_pathを維持する。そうすれば、サーバー上のファイルを移動してパスを更新しなければならなくなります。 file_linkの一部としてパスがある場合、それを変更するのはちょっと複雑です。 – ethrbunny