如何在Oracle SQL中向表插入多条对象类型的kids数据?
Oracle SQL 插入第二条子女记录解决方案
首先你当前的表结构存在限制:person表的ks字段被定义为单个kids对象类型,本身仅支持存储单条子女数据,无法直接存入第二条子女记录。要实现需求可以选择以下两种方案:
方案1:修改字段为集合类型(适合多子女存储场景,推荐)
- 第一步:创建
kids类型的集合类型
CREATE TYPE kids_list AS TABLE OF kids;
- 第二步:修改
person表的ks字段类型,配置嵌套表存储参数
ALTER TABLE person MODIFY ks kids_list NESTED TABLE ks STORE AS ks_nested_table;
- 第三步:给已有id为1的记录更新添加第二条子女数据
UPDATE person SET ks = kids_list( kids('Michelangelo', 'Trudeau', 14), kids('Leonardo', 'Trudeau', 10) ) WHERE id = '1';
后续如果需要插入更多子女,直接在kids_list里追加kids对象即可。
方案2:新增独立子女关联表(不需要修改原表结构,适合扩展)
如果不想改动原person表结构,可以新增关联表单独存储子女数据:
- 第一步:创建子女关联表,关联
person表的id字段
CREATE TABLE person_kids ( person_id VARCHAR(10), kid_info kids, CONSTRAINT fk_person_kid FOREIGN KEY (person_id) REFERENCES person(id) );
- 第二步:插入第二条子女记录
INSERT INTO person_kids VALUES('1', kids('Leonardo', 'Trudeau', 10));
小提示:Oracle中字符串常量建议使用单引号,双引号一般用于识别大小写敏感的标识符,可避免不必要的语法报错。
内容的提问来源于stack exchange,提问作者Night Fall
相关产品推荐
相关产品推荐

