CREATE TABLE BUILD_ADMIN_INFO( ID INT PRIMARY KEY, BUILD_ADMIN_NAME VARCHAR2 (10), SEX CHAR(2) NOT NULL, PHONE VARCHAR2(20) NOT NULL, DORMID INT, BUILDID INT ); CREATE TABLE DORM_INFO( ID INT PRIMARY KEY , DORM_INFO VARCHAR2(10) NOT NULL, CHIEF VARCHAR2(10) NOT NULL, FLOOR VARCHAR2(100) NOT NULL, BED_NUMBER VARCHAR2(100) NOT NULL, ACTUAL_NUMBER VARCHAR2(100) NOT NULL, FREEBED VARCHAR2(100) NOT NULL, AIR_CONDITIONER CHAR(2) NOT NULL, BUILDID INT, BUILD_ADMINID INT );报错是找不到父键
时间: 2023-12-07 21:03:39 浏览: 43
根据您提供的建表语句,建议您检查一下插入数据时 BUILD_ADMIN_INFO 表中的 DORMID 和 BUILDID 是否存在于对应的父表中。如果不存在,就会出现找不到父键的错误。
另外,建议您在建表时设置外键约束,这样可以避免插入不合法的数据。例如,在 BUILD_ADMIN_INFO 表中,可以将 DORMID 和 BUILDID 设置为外键,指向对应的父表的主键,如下所示:
```
CREATE TABLE BUILD_ADMIN_INFO(
ID INT PRIMARY KEY,
BUILD_ADMIN_NAME VARCHAR2 (10),
SEX CHAR(2) NOT NULL,
PHONE VARCHAR2(20) NOT NULL,
DORMID INT,
BUILDID INT,
FOREIGN KEY (DORMID) REFERENCES DORM_INFO(ID),
FOREIGN KEY (BUILDID) REFERENCES BUILD_INFO(ID)
);
```
在 DORM_INFO 表中也可以类似地设置外键约束。这样可以确保插入的数据符合父表的要求,避免了出现找不到父键的错误。
相关问题
create table lx_sql_ddl1( int_id int, col_varchar varchar(100), col_char char(50), PRIMARY KEY(int_id) );mysql建表时使他大小写敏感
在MySQL中,默认情况下是大小写不敏感的,如果要使其大小写敏感,需要在创建数据库时指定它的字符集为“utf8_bin”,这样就可以保证表名、列名等的大小写敏感了。
可以使用以下语句来创建一个大小写敏感的表:
```
CREATE TABLE lx_sql_ddl1 (
int_id INT,
col_varchar VARCHAR(100),
col_char CHAR(50),
PRIMARY KEY (int_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8_bin;
```
在上面的语句中,ENGINE=InnoDB表示使用InnoDB存储引擎,DEFAULT CHARSET=utf8_bin表示指定字符集为utf8_bin,这样就可以使表名、列名等大小写敏感了。
CREATE TABLE table_name ( zd1 INT(4) NOT NULL, zd2 VARCHAR(255), PRIMARY KEY (zd1) ) ENGINE=OLAP; 有什么错误吗
这句SQL语句的语法是正确的,但是ENGINE=OLAP参数是不支持的,因为DB2数据库不支持OLAP存储引擎。如果需要指定存储引擎,可以使用DB2支持的其他存储引擎,例如InnoDB或者Memory。因此,可以将语句修改为:
```
CREATE TABLE table_name (
zd1 INT(4) NOT NULL,
zd2 VARCHAR(255),
PRIMARY KEY (zd1)
) ENGINE=InnoDB;
```
这样就可以在DB2数据库中创建一个名为“table_name”的表,该表包含两个列:zd1和zd2,其中zd1是NOT NULL的主键列,数据类型为INT,长度为4,zd2是VARCHAR数据类型,最大长度为255,并且存储引擎为InnoDB。