|
ビット演算子 OR は、2 つのオペランド間でビットごとの論理和演算を実行します。
ビット演算 OR は、2 つのビットを比較し、一方または両方のビットの値が 1 の場合は、値 1 を結果に代入します。入力式のどちらのビットの値も 1 でない場合は、結果のビットに 0 をセットします。OR 演算子は、オペランドとして数値のみを取ります。
式 | 式
式は INTEGER データ型を含んでいる任意の有効な式です。ビット演算のためにバイナリ数値へ変換されます。
異なる INTEGER データ型のオペランドを伴うビット演算 OR では、2 つのオペランドのうち、サイズの小さなデータ型の引数が大きなデータ型へ変換されるか、または大きい方の次に大きなデータ型へ変換されます。たとえば、smallint と integer の間で OR 演算を実行する場合、smallint 式は integer へ変換されます。
ビット演算 OR にかかわるオペランドが符号付きの場合、結果の値も符号付きになります。
この例では、最初に X$Index テーブルに外部キー エントリと主キー エントリを作成する方法を示し、次に外部キーと主キーの制約の一覧を取得する方法を示します。
次のステートメントを実行すると、X$Index テーブルに 2 つのエントリが作成されます(1 つは外部キー用で、1 つは主キー用です)。
CREATE TABLE Employee ( empid IDENTITY NOT NULL PRIMARY KEY, -- Employee ID empname VARCHAR(50) NOT NULL, -- employee の名前 supid INTEGER NULL -- supervisor の ID ) ALTER TABLE Employee ADD CONSTRAINT SupIdMustBeValid FOREIGN KEY (supid) REFERENCES Employee(empid) ON DELETE CASCADE
次のステートメントを実行すると、データベース内の全テーブルに関するすべての外部キーおよび主キーの一覧が取得されます。
select B.Xf$Name "Table name", C.Xe$Name "Column name", IF (Xi$Flags & 8192 = 0, 'Primary key', 'Foreign key') "Key type" from X$Index A, X$File B, X$Field C where (A.Xi$Flags & (16384 | 8192)) > 0 AND A.Xi$File = B.Xf$Id AND A.Xi$Field = C.Xe$Id
ステートメントを実行すると、次のようになります。
|