我必须在Oracle sql表中插入几行。喜欢
insert into table (col1, col2, col_unique_guid) select col1, "bla", sys_guid() from source_table;
不幸的是,sys_guid(( 对所有行都是相同的 - 有没有办法在序列上为每行插入单独的 guid?
我无法重现您的问题,但在某些情况下,oracle可能会"优化"查询中的函数调用,以使函数在查询执行期间仅调用一次。
您可以通过编写包装函数并将 rownum 传递给它来强制 Oracle 为每一行调用该函数:
CREATE OR REPLACE function get_my_guid(i number) return raw
is
begin
return sys_guid();
end;
/
例如:
insert into test_guid (col1, col2, col_unique_guid) select col1, col2, get_my_guid(rownum) from test_guid_src;