[Ur] Sequences

Ziv Scully ziv at mit.edu
Sat Apr 2 03:07:19 EDT 2016


Same again: you need to run the generated SQL script (like last time) to
create the sequence in the database.

In general, you need to do this whenever your table/sequence schema
changes. In the case where you just add tables or sequences, running the
SQL file again suffices. If you've modified the layout of a table, you
might need to manually drop the table first. If you want to modify a table
while keeping the existing data... well, I'm sure there's a way, but I don't
know what it is.


On Friday, April 1, 2016, Yves Cloutier <yves.cloutier at gmail.com> wrote:

> Hello,
>
> I would like to refactor some code to use a sequence instead of manually
> incrementing a counter to serve as a unique db table index.
>
> Following an example, I simply did:
>
> ...
> sequence expId
> ...
>
> Then when I want to increment:
>
> ...
> nextId <- nextval expId;
> ...
>
> I recompile, but when I execute I get the following error:
>
> Fatal initialization error: Sequence 'uw_Portfolipro_expId' does not exist.
>
> IS there something else that I need to do, create or initialise in order
> to use sequences?
>
> Below is my full code:
>
> table experienceTable : { Id : int, Description : string}
>   PRIMARY KEY Id
>
> sequence expId
>
> fun refresh () =
>     rows <- queryX (SELECT * FROM experienceTable)
>             (fn row => <xml><tr>
>               <td>{[row.ExperienceTable.Id]}</td>
> <td>{[row.ExperienceTable.Description]}</td>
>               <td><form><submit action={deleteExperience
> row.ExperienceTable.Id} value="Delete"/></form></td>
>             </tr></xml>);
>     return <xml>
>       <table border=1>
>         <tr> <th>Id</th> <th>Description</th></tr>
>         {rows}
>       </table>
>
>       <br/><hr/><br/>
>
>       <form>
>         <table>
>           <tr> <th>Description:</th><td><textbox{#Description}/></td> </tr>
>           <tr> <th/> <td><submit action={addExperience} value="Add"/></td>
> </tr>
>         </table>
>       </form>
>     </xml>
>
> (* Add a new experience *)
> and addExperience experience =
>     nextId <- nextval expId;
>     dml (INSERT INTO experienceTable (Id, Description)
>          VALUES ({[nextId]}, {[readError experience.Description]}));
>     page <- refresh ();
>     return <xml><body>
>       {page}
>     </body></xml>
>
> (* Delete a given experience *)
> and deleteExperience experienceId () =
>     dml (DELETE FROM experienceTable
>          WHERE t.Id = {[experienceId]});
>     page <- refresh ();
>     return <xml><body>
>       {page}
>     </body></xml>
>
> fun main () =
>     content <- refresh ();
>     return <xml><body>
>       {content}
>     </body></xml>
>
>
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.impredicative.com/pipermail/ur/attachments/20160402/f43cbbb2/attachment.html>


More information about the Ur mailing list