SOF の皆様、こんにちは。
私のアプリケーションにはたくさんのテーブルがあります。また、各テーブルには 0/n 個の列挙子があります。すべてが順調に進んでいましたが、突然、クライアントが自分のデータをOracleに移動したいと考えました(それまではネイティブDBがありました)。これで、テーブルのSQLを作成できましたが、列挙子。
私はLord Internetに犠牲を払いました(これは基本的に、FBを1〜2時間見ないことを意味しました)、オラクルに使用できることを発見しました:
Column_Name Data_type(size)(Check In(<Possible Values>)).
これをよく見てみると、列挙子用のテーブルを作成し、値を挿入する際にそれらのテーブルを制約として使用した方がよいことがわかりました。何かのようなもの
テーブル列挙子には、ID と列挙値の 2 つのフィールドがあります。
テーブル My_Table には、列挙子テーブルに存在する値のみを受け入れる Name 列があります。
理由: 1. 列挙子のほとんどは、異なるテーブル間で繰り返されます。2. クライアントがいずれかの列挙子テーブルを更新した場合、戻って他のすべてのテーブルも変更しないようにします。
他のソリューションも検討しています。しかし、あなたが私の旅を導いてくれるなら、私はあなたの賢者に感謝します.
null問題の解決策も見つかりました:D ...そして、空の文字列(または)テーブルの値のいずれかを挿入できます:
GOT THE SOLUTION :D
それらの両方を混合しました(つまり)CHECK INとConstraint :D
CREATE TABLE "MY_TABLE1"
("ID" number(11) not null,
"STATUS" varchar2(12) Check(STATUS IN('')), << -- Did the trick,
FOREIGN KEY("STATUS") REFERENCES MY_ENUM3("VALUES"),
primary key ("ID"));