自动生成测试数据,同时保持表关系/约束

时间:2014-05-21 13:27:36

标签: java sql oracle testing oracle11g

鉴于以下两个表:

CREATE TABLE AUTHOR
   (
    author_id number,
        author_fname    varchar(20),
        author_lname    varchar(20),
        author_telno    varchar(20),
        author_address  varchar(200)
)
/

 CREATE TABLE AUTHOR_BOOKS
   (
        author_id_book  number,
        author_id   number,
        boook_name  varchar(10),
        book_publisher varchar(20),
        published_date  DATE,
        published_country_code  varchar(3)
)
/

在上面的两个表结构中,author_book.author_id是author.author_id的外键,这意味着作者可以发布多本书。 如何为两个表生成测试数据。我想在两个表上生成测试数据,例如AUTHOR中有1000行,AUTHOR_BOOK中有2500行。

我正在努力的领域是将AUTHOR表中的主键链接到自动生成AUTHOR_BOOKS内容的最简单方法?

可以使用哪些可能的方法为具有一对多关系的表自动生成测试数据?我特别感兴趣的是Java,PL / SQL或纯粹的SQL解决方案。

提前致谢。

1 个答案:

答案 0 :(得分:1)

最有可能的是,您将使用ORACLE序列来填充您的ID列。

然后在您的播种脚本中,您将生成以下内容:

insert into author values (author_seq.nextval, other columns);
insert into author_books values (book_seq.nextval, author_seq.currval, other columns1);
insert into author_books values (book_seq.nextval, author_seq.currval, other columns2);
...
insert into author values (author_seq.nextval, other columns);
insert into author_books values (book_seq.nextval, author_seq.currval, other columns3);
insert into author_books values (book_seq.nextval, author_seq.currval, other columns4);