PEPPLER.ORG
Michael Peppler
Sybase Consulting
Menu
Home
Sybase on Linux
Install Guide for Sybase on Linux
General Sybase Resources
General Perl Resources
Freeware
Sybperl
Sybase::Simple
DBD::Sybase
BCP Tool
Bug Tracker
Mailing List Archive
Downloads Directory
FAQs
Sybase on Linux FAQ
Sybperl FAQ
Personal
Michael Peppler's resume

sybperl-l Archive

Up    Prev    Next    

From: Oliver Scheit <oscheit at quoka dot com>
Subject: Re: How to Count Rows?
Date: Jun 3 1999 3:37PM

Thanx Michael!
I changed the column to IDENTITY type.

Greetings, Oli

Michael Peppler schrieb:

> Oliver Scheit writes:
>  > Hi everybody !
>  > I'm having trouble ! Here's part of the script:
>  >
>  > $dbrec = 0;
>  > $dbrec = $q->ct_sql("select count (*) from my_table");
>  > $dbrec++;
>  > $q->ct_execute("insert into my_table values ($dbrec, 'Test')");
>  >
>  > What I'm trying to do is:
>  >
>  > Number    Text
>  > --------    ------
>  > 1               Test
>  > 2               Test
>  > 3               Test
>  >
>  > I'm used to using dBase tables - there you can define an
>  > auto-incremental Column.
>  > Or just call Table.RecordCount using Delphi, etc etc.
>  >
>  > If anybody could help me, I'd be grateful !
>
> You should get a good book on SQL, and read the appropriate manuals
> from Sybase on Transact-SQL.
>
> Sybase has lots of features (auto-incrementing columns among them).
>
> However, your code is broken because you use ct_sql() incorrectly.
> ct_sql() doesn't return a value. It returns a reference to an array,
> where each element is a reference to another array (for each row of
> data returned by the SQL query).
>
> So your code should be written like this:
>
> $ret = $dbh->ct_sql("select count(*) from my_table");
> $ret->[0]->[0]++;
> $q->ct_execute("insert into my_table values ($ret->[0]->[0], 'Test')");
>
> etc...
>
> However, this won't work right if you have more than one user adding
> data to your table - the rowcount could very well change between your
> select and your insert.
>
> So you should look at the IDENTITY column property, which does what
> you want.
>
> Michael
> --
> Michael Peppler         -||-  Data Migrations Inc.
> mpeppler@peppler.org    -||-  http://www.mbay.net/~mpeppler
> Int. Sybase User Group  -||-  http://www.isug.com
> Sybase on Linux mailing list: ase-linux-list@isug.com