This is more of an SQL question, but I would like to know how to do it in
SQL Server.
In a given table I have two columns of importance. The first is account
number (and it is a foreign key). The other is agent_id. The combination
must be unique. What I would like to do is to autoincrement the agent_id
for a given account number. Example:
Account Number Agent ID
1000 1
1000 2
1100 1
1200 1
1200 2
1200 3
When I add a new agent to account number 1200, I would like it to come up
automatically with 2 for the agent_id.. I know I could do a select on
account number and return MAX of agent_id. I could then increment that
value and use that pair for new agent creation. However, I wonder if thee
is a way to do that automatically in SQL?
Shelly 10 1085
Well, to get the lastAgentID number you could
Select max(AgentID) From Agent
"Shelly" <sh************@asap-consult.comwrote in message
news:13*************@corp.supernews.com...
This is more of an SQL question, but I would like to know how to do it in
SQL Server.
In a given table I have two columns of importance. The first is account
number (and it is a foreign key). The other is agent_id. The combination
must be unique. What I would like to do is to autoincrement the agent_id
for a given account number. Example:
Account Number Agent ID
1000 1
1000 2
1100 1
1200 1
1200 2
1200 3
When I add a new agent to account number 1200, I would like it to come up
automatically with 2 for the agent_id.. I know I could do a select on
account number and return MAX of agent_id. I could then increment that
value and use that pair for new agent creation. However, I wonder if thee
is a way to do that automatically in SQL?
Shelly
"Just Me" <news.microsoft.comwrote in message
news:Og**************@TK2MSFTNGP02.phx.gbl...
Well, to get the lastAgentID number you could
Select max(AgentID) From Agent
Like I said, I know I can do this (adding, of course, the clause WHERE
accountNumber=theaccountNumber) , but my question is can SQL do this
automatically on the insert statement into the Agent table? If it can, then
I can do an ExecuteScalar and return that value from the insert query
without having to do two queries in succession with the possiblity of a race
condition where someone else is adding an agent to the same account at the
same time.
Shelly
>
"Shelly" <sh************@asap-consult.comwrote in message
news:13*************@corp.supernews.com...
>This is more of an SQL question, but I would like to know how to do it in SQL Server.
In a given table I have two columns of importance. The first is account number (and it is a foreign key). The other is agent_id. The combination must be unique. What I would like to do is to autoincrement the agent_id for a given account number. Example:
Account Number Agent ID 1000 1 1000 2 1100 1 1200 1 1200 2 1200 3
When I add a new agent to account number 1200, I would like it to come up automatically with 2 for the agent_id.. I know I could do a select on account number and return MAX of agent_id. I could then increment that value and use that pair for new agent creation. However, I wonder if thee is a way to do that automatically in SQL?
Shelly
OK, now I understand what you are trying to acheive. I think the answer is
no there is not.
"Shelly" <sh************@asap-consult.comwrote in message
news:13*************@corp.supernews.com...
>
"Just Me" <news.microsoft.comwrote in message
news:Og**************@TK2MSFTNGP02.phx.gbl...
>Well, to get the lastAgentID number you could
Select max(AgentID) From Agent
Like I said, I know I can do this (adding, of course, the clause WHERE
accountNumber=theaccountNumber) , but my question is can SQL do this
automatically on the insert statement into the Agent table? If it can,
then I can do an ExecuteScalar and return that value from the insert query
without having to do two queries in succession with the possiblity of a
race condition where someone else is adding an agent to the same account
at the same time.
Shelly
>>
"Shelly" <sh************@asap-consult.comwrote in message news:13*************@corp.supernews.com...
>>This is more of an SQL question, but I would like to know how to do it in SQL Server.
In a given table I have two columns of importance. The first is account number (and it is a foreign key). The other is agent_id. The combination must be unique. What I would like to do is to autoincrement the agent_id for a given account number. Example:
Account Number Agent ID 1000 1 1000 2 1100 1 1200 1 1200 2 1200 3
When I add a new agent to account number 1200, I would like it to come up automatically with 2 for the agent_id.. I know I could do a select on account number and return MAX of agent_id. I could then increment that value and use that pair for new agent creation. However, I wonder if thee is a way to do that automatically in SQL?
Shelly
"Shelly" <sh************@asap-consult.comwrote in message
news:13*************@corp.supernews.com...
>
"Just Me" <news.microsoft.comwrote in message
news:Og**************@TK2MSFTNGP02.phx.gbl...
>Well, to get the lastAgentID number you could
Select max(AgentID) From Agent
Like I said, I know I can do this (adding, of course, the clause WHERE
accountNumber=theaccountNumber) , but my question is can SQL do this
automatically on the insert statement into the Agent table? If it can,
then I can do an ExecuteScalar and return that value from the insert query
without having to do two queries in succession with the possiblity of a
race condition where someone else is adding an agent to the same account
at the same time.
Shelly
>>
"Shelly" <sh************@asap-consult.comwrote in message news:13*************@corp.supernews.com...
>>This is more of an SQL question, but I would like to know how to do it in SQL Server.
In a given table I have two columns of importance. The first is account number (and it is a foreign key). The other is agent_id. The combination must be unique. What I would like to do is to autoincrement the agent_id for a given account number. Example:
Account Number Agent ID 1000 1 1000 2 1100 1 1200 1 1200 2 1200 3
When I add a new agent to account number 1200, I would like it to come up automatically with 2 for the agent_id.. I know I could do a select on account number and return MAX of agent_id. I could then increment that value and use that pair for new agent creation. However, I wonder if thee is a way to do that automatically in SQL?
Shelly
--
Mark Rae
ASP.NET MVP http://www.markrae.net
In article <13*************@corp.supernews.com>, Shelly
<sh************@asap-consult.comwrites
>my question is can SQL do this automatically on the insert statement into the Agent table? If it can, then I can do an ExecuteScalar and return that value from the insert query without having to do two queries in succession with the possiblity of a race condition where someone else is adding an agent to the same account at the same time.
You don't need two queries, nor do you need to worry about racing. You
use a composite SQL query like this...
begin transaction
declare @maxagentid int
select @maxagentid=max(agentid) from agents where...
insert agents (agentid,...) values (@maxagentid,...)
commit transaction
Bear in mind that this can all go in one string from your ASP.NET code,
just separate the statements with commas...
string sql = "begin transaction; declare @maxagentid int; ...";
Note that this was written off the top of my head, so may contain some
errors, plus it will need to be modified to your exact situation, but
hopefully it should be clear enough to show what I meant.
HTH
--
Alan Silver
(anything added below this line is nothing to do with me)
"Alan Silver" <al*********@nospam.thanx.invalidwrote in message
news:nE**************@nospamthankyou.spam...
In article <13*************@corp.supernews.com>, Shelly
<sh************@asap-consult.comwrites
>>my question is can SQL do this automatically on the insert statement into the Agent table? If it can, then I can do an ExecuteScalar and return that value from the insert query without having to do two queries in succession with the possiblity of a race condition where someone else is adding an agent to the same account at the same time.
You don't need two queries, nor do you need to worry about racing. You use
a composite SQL query like this...
begin transaction
declare @maxagentid int
select @maxagentid=max(agentid) from agents where...
insert agents (agentid,...) values (@maxagentid,...)
commit transaction
Bear in mind that this can all go in one string from your ASP.NET code,
just separate the statements with commas...
string sql = "begin transaction; declare @maxagentid int; ...";
Note that this was written off the top of my head, so may contain some
errors, plus it will need to be modified to your exact situation, but
hopefully it should be clear enough to show what I meant.
HTH
--
Alan Silver
(anything added below this line is nothing to do with me)
Yes, it is clear and a good suggestion. How would you increment the
@maxagentid by one before (or in) the insert line in the same sql
transaction?
Shelly
In article <13*************@corp.supernews.com>, Shelly
<sh*******@asap-consult.comwrites
<snip>
>Yes, it is clear and a good suggestion. How would you increment the @maxagentid by one before (or in) the insert line in the same sql transaction?
Sorry, forgot that bit! It is very simple...
insert agents (agentid,...) values (@maxagentid + 1,...)
Simple eh? Note that I haven't tested this, but if it doesn't work, you
can just modify the @maxagentid value before this line.
HTH
--
Alan Silver
(anything added below this line is nothing to do with me)
"Alan Silver" <al*********@nospam.thanx.invalidwrote in message
news:Ko**************@nospamthankyou.spam...
In article <13*************@corp.supernews.com>, Shelly
<sh*******@asap-consult.comwrites
<snip>
>>Yes, it is clear and a good suggestion. How would you increment the @maxagentid by one before (or in) the insert line in the same sql transaction?
Sorry, forgot that bit! It is very simple...
insert agents (agentid,...) values (@maxagentid + 1,...)
Simple eh? Note that I haven't tested this, but if it doesn't work, you
can just modify the @maxagentid value before this line.
This worked great except in one case. That case is where this is the first
agent to be added for that account. In that case, the first select will not
find a value for @maxAgentId and the transaction fails. The error message
is that it cannot insert the value NULL into column 'agentID' in table
Agent. I guss that this is because the operation of "@maxAgentID + 1"
failed to consider the NULL of "@maxAgentID to be a zero and so the
operation failed.
To solve this I added a line "IF @maxAgentID IS NULL @maxAgentID = 0"
before the insertion. It now works in all cases.
Thank you very much.
Shelly
"Shelly" <sh************@asap-consult.comwrote in message
news:13*************@corp.supernews.com...
To solve this I added a line "IF @maxAgentID IS NULL @maxAgentID = 0"
before the insertion. It now works in all cases.
Alternatively, you could have used the ISNULL T-SQL function:
ISNULL(@maxAgentID, 0)
--
Mark Rae
ASP.NET MVP http://www.markrae.net
In article <13*************@corp.supernews.com>, Shelly
<sh************@asap-consult.comwrites
>To solve this I added a line "IF @maxAgentID IS NULL @maxAgentID = 0" before the insertion. It now works in all cases.
Yup, that's a good way to do it.
>Thank you very much.
Pleasure ;-)
--
Alan Silver
(anything added below this line is nothing to do with me) This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics
by: Mohammed Mazid |
last post by:
Can anyone please help me on how to move to the next and previous
question?
Here is a snippet of my code:
Private Sub cmdNext_Click()
End Sub
Private Sub cmdPrevious_Click()
showrecord
|
by: Stevey |
last post by:
I have the following XML file...
<?xml version="1.0"?>
<animals>
<animal>
<name>Tiger</name>
<questions>
<question index="0">true</question>
<question index="1">true</question>
</questions>
|
by: nospam |
last post by:
Ok, 3rd or is it the 4th time I have asked this question on Partial Types,
so, since it seems to me that Partial Types is still in the design or
development stages at Microsoft, I am going to ask...
|
by: Ekqvist Marko |
last post by:
Hi,
I have one Access database table including questions and answers. Now
I need to give answer id automatically to questionID column. But I
don't know how it is best (fastest) to do?
table...
|
by: glenn |
last post by:
I am use to programming in php and the way session and post vars are past
from fields on one page through to the post page automatically where I can
get to their values easily to write to a...
|
by: Rider |
last post by:
Hi, simple(?) question about asp.net configuration..
I've installed ASP.NET 2.0 QuickStart Sample successfully. But, When I'm
first start application the follow message shown.
=========
Server...
|
by: Jeff |
last post by:
In the function below, can size ever be 0 (zero)?
char *clc_strdup(const char * CLC_RESTRICT s)
{
size_t size;
char *p;
clc_assert_not_null(clc_strdup, s);
size = strlen(s) + 1;
|
by: spibou |
last post by:
In the statement "a *= expression" is expression assumed to be
parenthesized ? For example if I write "a *= b+c" is this the same
as "a = a * (b+c)" or "a = a * b+c" ?
|
by: Allan Ebdrup |
last post by:
Hi,
I'm trying to render a Matrix question in my ASP.Net 2.0 page, A matrix
question is a question where you have several options that can all be rated
according to several possible ratings (from...
|
by: Zhang Weiwu |
last post by:
Hello!
I wrote this:
..required-question p:after {
content: "*";
}
Corresponding HTML:
<div class="required-question"><p>Question Text</p><input /></div>
<div...
|
by: emmanuelkatto |
last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud.
Please let me know.
Thanks!
Emmanuel
|
by: BarryA |
last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
|
by: nemocccc |
last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
|
by: Sonnysonu |
last post by:
This is the data of csv file
1 2 3
1 2 3
1 2 3
1 2 3
2 3
2 3
3
the lengths should be different i have to store the data by column-wise with in the specific length.
suppose the i have to...
|
by: Hystou |
last post by:
There are some requirements for setting up RAID:
1. The motherboard and BIOS support RAID configuration.
2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
|
by: marktang |
last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
|
by: Oralloy |
last post by:
Hello folks,
I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>".
The problem is that using the GNU compilers,...
|
by: jinu1996 |
last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
|
by: agi2029 |
last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...
| |