Insert into and Sequence

Lists: pgsql-sql
From: Luigi Pirillo <luigi(dot)pirillo(at)gmail(dot)com>
To: pgsql-sql(at)postgresql(dot)org
Subject: Insert into and Sequence
Date: 2007-12-17 19:30:00
Message-ID: 4766CE38.6060904@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-sql

Hi to all,

executing an INSERT INTO like this:

INSERT INTO "_Tests_Steps"
(
"New_Test_Step_Id",
"Test_Step_Id",
"Process_Test_Id",
"Step_Id",
"Sequence_Id",
"StepGroup_Id",
"Skip"
)
SELECT
nextval('"Tests_Steps_Test_Step_Id_seq"'),
"Test_Step_Id",
B."Process_Test_Id",
"Step_Id",
"Sequence_Id",
"StepGroup_Id",
A."Skip"
FROM "_Processes_Tests" B INNER JOIN "Tests_Steps" A
ON A."Process_Test_Id" = B."Process_Test_Id"
WHERE "Version_Id" = vers_id
ORDER BY "Test_Step_Id";
...............
where "_Tests_Steps" and "_Processes_Tests" are both temporary
tables, in the resulting "_Tests_Steps table records are not sorted in
the expected mode.
In other word, I need to extract records from "Tests_Steps" and then put
them in "_Tests_Steps" ordered exactly as they were inserted first time.
This because I need to duplicate this records, assigning them a new
serial value. This records are later binding to others records of
different tables.

The resulting recordset is the follow:

"New_Test_Step_Id", "Test_Step_Id", "Process_Test_Id", "Step_Id",
"Sequence_Id", "StepGroup_Id", "Skip"
2332; 2136;
2225; 958; 404;
363; f
2331; 2137;
2225; 959; 404;
363; f
2334; 2285;
2225; 960; 404;
363; f
2333; 2286;
2225; 961; 404;
363; f

Apparently, new records are not inserted in the table according to the
order selected by "Test_Step_Id" field;

Any suggest??

Thanks in advance

Luigi Pirillo


From: Ireneusz Pluta <ipluta(at)wp(dot)pl>
To: Luigi Pirillo <luigi(dot)pirillo(at)gmail(dot)com>
Cc: pgsql-sql(at)postgresql(dot)org
Subject: Re: Insert into and Sequence
Date: 2007-12-19 13:21:29
Message-ID: 47691AD9.5070704@wp.pl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-sql

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html;charset=ISO-8859-15"
http-equiv="Content-Type">
<title></title>
</head>
<body bgcolor="#ffffff" text="#000000">
<blockquote cite="mid:4766CE38(dot)6060904(at)gmail(dot)com" type="cite"><tt><br>
Apparently, new records are not inserted in the table according to the
order selected by "Test_Step_Id" field;
<br>
</tt></blockquote>
<tt>As seen in: <a class="moz-txt-link-freetext" href="http://en.wikipedia.org/wiki/SQL:">http://en.wikipedia.org/wiki/SQL:</a><br>
"The order of rows returned by an SQL query is never guaranteed unless
an <code>ORDER BY</code> clause is specified".<br>
<br>
In other words, a database system does not guarantee you the order in
which table rows are stored. So, the order in which you insert your
rows is not the one which has to be followed when selecting them
afterwards. You must specify by "ORDER BY" how you want to sort your
recordset.<br>
<br>
It seems you need to revisit the concept of your system.<br>
<br>
Best regards<br>
<br>
Irek<br>
</tt><br>
</body>
</html>

Attachment Content-Type Size
unknown_filename text/html 1.1 KB