繁体   English   中英

将外键引用为其他类型

[英]Reference a foreign key to a different type

是否可以在PL / SQL中执行此操作:

CREATE TABLE ROOM_TYPE
(
   ROOM_TYPE_ID                     NUMBER NOT NULL PRIMARY KEY,
   REF_SERVICE_PROVIDER             NUMBER NOT NULL,
   ROOM_TYPE_NAME1                  VARCHAR2(100) NOT NULL,
   ROOM_TYPE_NAME2                  VARCHAR2(100),
   REF_SERVICE_ID                   NUMBER(15,3),
   ROOM_AC                          NUMBER(1),
   ROOM_BATH_ROOM                   NUMBER(1),
   ROOM_CHOICE_OF_MEAL              NUMBER(1),


   CONSTRAINT fk_ref_service_provider
   FOREIGN KEY (REF_SERVICE_PROVIDER)
   REFERENCES PROVIDER(PROVIDER_ID),

   CONSTRAINT fk_ref_service_id
   FOREIGN KEY (REF_SERVICE_ID)
   REFERENCES MEDICAL_SERVICE(SERVICE_ID)
);

虽然REF_SERVICE_ID的类型number(15,3)是在该表的外键是指主键SERVICE_ID的类型number

现在的问题是,我可以参考的类型主键number而国外的关键是number(15,3)型!?

是的,您可以,但是出现以下错误的可能性很大:

ORA-01438: value larger than specified precision allowed for this column

例如:

CREATE TABLE A ( ID NUMBER NOT NULL PRIMARY KEY);
CREATE TABLE b
     (
          id  NUMBER(15,3),
          val CHAR(1),
          CONSTRAINT b_pk FOREIGN KEY (ID) REFERENCES a(id)
     );

     INSERT INTO A VALUES(456);
     INSERT INTO B VALUES( 456, 'X');  --inserts successfully

 INSERT INTO A VALUES(12345678901234567890);
 INSERT INTO B VALUES( 12345678901234567890, 'X'); --errors

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM