0

パラメータ名を格納するテーブルがあります

CREATE TABLE PARAM_NAMES
{

PARAM_TYPE_ID" NUMBER(*,0) NOT NULL ENABLE, 
"PARAM_NAME" VARCHAR2(64 BYTE) NOT NULL ENABLE, 

"DEFAULT_VALUE" VARCHAR2(256 BYTE), 

 CONSTRAINT "PARAMS_UK1" UNIQUE ("PARAM_TYPE_ID")
//PARAM_TYPE ID is the primary key
}

パラメータ値を格納する他のテーブルがありますが、

CREATE TABLE PARAM_VALUES" 
   {    "ID"  NUMBER(*,0) NOT NULL ENABLE, 
    "PARAM_TYPE_ID" NUMBER(*,0) NOT NULL ENABLE, 
    "PARAM_VALUE" VARCHAR2(256 BYTE), 

     CONSTRAINT "PARAM_VALUES_PK" PRIMARY KEY ("ID", "PARAM_TYPE_ID")
}

param Id を持つ特定のパラメーター名について、ParamId を使用してパラメーター値を他のテーブルに格納しています。

今、私は JDBC を使用してテーブルに値を取得および設定しています。今、私はこのようなことをしたいと思っています。

JDBC からパラメーター値を挿入するときに、paramvalue が null または空の場合は DEFAULT_VALUE を挿入します。つまり、誰かが JDBC から null 値または空の値を挿入した場合、デフォルト値を PARAM_NAMES テーブルから PARAM_VALUES テーブル PARAM_VALUE 列にコピーします。または制約レベル?私は挿入する前に Java で実行できることを知っています。

PARAM_TYPE_ID   PARAM_NAME           DEFAULT_VALUE
1                  ABC                 TEST1
2                  CDE                 TEST2
3                  FGH                 TEST3


PARAM_TYPE_ID     PARAM_VALUE
1                   TEST4       //Since not null
2                    TEST2      //since null default value is copied
3                   TEST3         //since null default value is copied
4

2 に答える 2

0

次のようなことができます。

create table abc (
field1 varchar(10) default 'fred'

ただし、アプリケーション コードを使用して、空の文字列をデフォルト値に強制するなどのことを行います。文字フィールドでは空の文字列が格納される可能性があり、数値フィールドでは例外がスローされる可能性があります。

于 2013-04-15T13:12:18.267 に答える
0

トリガーでこれを行うことはできませんか?これにより、データを挿入するプロセスに関係なく、ビジネス ルールを適用できます。これにより、更新と、param_type_id が param_names テーブルに見つからない場合も処理されます。

create or replace trigger trg_param_values 
before insert or update on param_values 
for each row
begin
  select default_value into :new.param_value
  from param_names
  where param_names.param_type_id = :new.param_type_id
  ;
exception
when others then
  :new.param_value := 'SOME_DEFAULT_VALUE'; 
end
;
于 2013-04-15T14:11:23.993 に答える