|
Well I agree with you I and I would never use datetime as a part of a key, but this is in production for 5 years before I got here. And yes the way it works, it would take a miracle from a higher power to create one that fast.
But, my delimna is that I know its wrong. But, I'm am merely the c# developer and its not good for a c# developer to tell the DBA ( which is the CIO ) that its wrong with out some sort of document to prove that its wrong other than some opinionated articles.
Even though, its wrong and I see why, it takes proof to change that and tell someone thier idea is faulty.
thanks
--------------------------------------------------------
1 line of code equals many bugs. So don't write any!!
My mad coder blog
|
|
|
|
|
Ista wrote: Even though, its wrong and I see why, it takes proof to change that and tell someone thier idea is faulty.
Hopefully, your DBA/CIO should accept some constructive criticism that his or her idea could be improved. I wouldn't say it is faulty. Maybe five years ago using a datetime as a PK was okay, but I still wouldn't use it.
Blurb from Microsoft[^]
I'd like to help but I don't feel like Googling it for you.
Last modified: Thursday, August 17, 2006 1:21:30 PM --
|
|
|
|
|
1 insert every 15 seconds for 5 years = 691,00010 million (ID-10-T error) records so it isn't that large of a table. Append an autonumber, make the autonumber the primary key and add an index on the date field. It will take less time to implement the solution than to argue the merits of either case.
-- modified at 15:10 Thursday 17th August, 2006
A man said to the universe:
"Sir I exist!"
"However," replied the Universe, "The fact has not created in me A sense of obligation."
-- Stephen Crane
|
|
|
|
|
yeah thats what I said. I told them to change it to an ID field and they told me that wouldn't make it unique.
I give up
--------------------------------------------------------
1 line of code equals many bugs. So don't write any!!
My mad coder blog
|
|
|
|
|
Some people are stupid beyond help. For your situation try writing a before trigger that does a loop that expires 15 seconds before allowing an insert. That will eliminate the problem. Heavily comment why you did it so you will not be made fun of years from know when someone reads it.
A man said to the universe:
"Sir I exist!"
"However," replied the Universe, "The fact has not created in me A sense of obligation."
-- Stephen Crane
|
|
|
|
|
Ennis Ray Lynch, Jr. wrote: Some people are stupid beyond help
I feel sorry for the situation he's in.
Ennis Ray Lynch, Jr. wrote: Heavily comment why you did it so you will not be made fun of years from know when someone reads it.
Start looking for a new job afterwards Who knows what other b.s. will pop up
too much daily WTF for someone... - Anton Afanasyev
|
|
|
|
|
Ista wrote: We have wait 15 seconds between inserts and it fails.
What is the error?
--EricDV Sig---------
Some problems are so complex that you have to be highly intelligent and well informed just to be undecided about them.
- Laurence J. Peters
|
|
|
|
|
It says a primary key violation. The only different field is the DateTime value. And the date time milli seconds are different
--------------------------------------------------------
1 line of code equals many bugs. So don't write any!!
My mad coder blog
|
|
|
|
|
Whilst I agree with the other guys that datetime fields are not ideal for a PK, they should be able to provide what you need under the circumstances described. I have a few questions that may help clarify/resolve the issue.
Has it only just started happening as you say that the code is 5 years old?
Does it always cause a PK violation?
Are you only inserting into 1 table?
Are all of the datetime values obtained from the same source?
Is the datetime value different for each insert?
Ian
|
|
|
|
|
i.j.russell wrote: Has it only just started happening as you say that the code is 5 years old?
Well it appears that on the development server the primary key exists, but on the rest of the servers(staging, QA, and production) it has either been deleted or never published. Probably it wasn't working in a roll-out and never got put back in.
i.j.russell wrote: Does it always cause a PK violation?
Always. They have managed to get the row inserted with the violation. Since The stored procedure calls another stored procedure to do the actual insert
i.j.russell wrote: Are you only inserting into 1 table?
Yes
i.j.russell wrote: Are all of the datetime values obtained from the same source?
Yes, there is a GetDate() inside the insert statement.
i.j.russell wrote: Is the datetime value different for each insert?
We have waited from 15 seconds to a few minutes and we always get the issue.
I realize, like everyone else, that this isn't advisable but this method seems to be carved in stone. Since I recommend an int column and they tell me that can't be the problem. If the world was a best case scenario, we probably wouldn't have a job to go to.
If you can tell me why this is bugging out when I'm not violating the date millisecond issue.
The PK is has 7 columns in it. Each isd an int field and thier exactly the same except for the GetDate() column, which is at the end
-- modified at 17:06 Thursday 17th August, 2006
--------------------------------------------------------
1 line of code equals many bugs. So don't write any!!
My mad coder blog
|
|
|
|
|
Well I thank you for trying to help.
The problem actually was that we had bad test data. It tried to update many rows and couldn't and somehow forced at PK issue.
Odd.
It works fine now. And they seems to think its okay to keep it datetime. I guess once a customer calls in they will want to change it.
Thanks.
--------------------------------------------------------
1 line of code equals many bugs. So don't write any!!
My mad coder blog
|
|
|
|
|
create table MyTable
(
MyCol datetime
PRIMARY KEY CLUSTERED
)
insert into MyTable (MyCol) values ('2006-08-17 15:36:13.779')
The value is rounded to '2006-08-17 15:36:13.780'
insert into MyTable (MyCol) values ('2006-08-17 15:36:13.781')
the value is rounded to '2006-08-17 15:36:13.780'
Strange...not sure why this is. No time to research right now. But, this may be what is causing the primary key violation.
--EricDV Sig---------
Some problems are so complex that you have to be highly intelligent and well informed just to be undecided about them.
- Laurence J. Peters
|
|
|
|
|
yeah every 3 milliseconds is treated as the same number.
I found tons of documents at MSDN for it
--------------------------------------------------------
1 line of code equals many bugs. So don't write any!!
My mad coder blog
|
|
|
|
|
What are the exact times that are causing problems in your table?
--EricDV Sig---------
Some problems are so complex that you have to be highly intelligent and well informed just to be undecided about them.
- Laurence J. Peters
|
|
|
|
|
I want to get the rows having non-repeated values.
E.g if we have 4 rows having data
12
9
13
12
then result set should be 9 and 13.
Do good and have good.
|
|
|
|
|
select a.col1 from
(
select distinct col1, count (col1) as Repeated from
dbo.YourTable group by col1
) a
where a.Repeated < 2
how vital enterprise application are for proactive organizations leveraging collective synergy to think outside the box and formulate their key objectives into a win-win game plan with a quality-driven approach that focuses on empowering key players to drive-up their core competencies and increase expectations with an all-around initiative to drive up the bottom-line. But of course, that's all a "high level" overview of things
--thedailywtf 3/21/06
|
|
|
|
|
Thanks for ur reply. ............it is working....
Do good and have good.
|
|
|
|
|
SELECT MyColumn
FROM MyTable
GROUP BY MyColumn
HAVING COUNT(*) < 2
|
|
|
|
|
Hi there,
I need to read data from a excel spreadsheet, show on a webpage and insert into a sql server 2005 database. Need to do it in asp.net 2.0, using ado.net and VB(or C# samples will also help).
Can anyone point me to the right place?
|
|
|
|
|
Do you have a standard format for the spreadsheet you are reading? If so you can execute a SQL DTS package and read the data via ado.net.
how vital enterprise application are for proactive organizations leveraging collective synergy to think outside the box and formulate their key objectives into a win-win game plan with a quality-driven approach that focuses on empowering key players to drive-up their core competencies and increase expectations with an all-around initiative to drive up the bottom-line. But of course, that's all a "high level" overview of things
--thedailywtf 3/21/06
|
|
|
|
|
Hi,
Is it possible to connect to a MySQL databse with c# asp.net without having to install anything extra to mysql?
I think MySQLDirect.NET is what im looking for but its not free, is there a free alternative to this? I don't need all the bells and whistles just something that I can use to connect with, do lookups and send commands.
Basically I just want to access the database using built in fuction of .net if possible, or if not some class that I could include, as i don't have direct access to the server it will be on so won't be able to install extras.
Hope that makes sence
Thanks in advance
|
|
|
|
|
u can download mysql.net connector from mysql.com. after that add its reference to yr project. then u can use it as u use SqlClient or OracleClient namespaces.
|
|
|
|
|
|
Try this for your connection string:
string conString = "Provider=Microsoft.Jet.OLEDB.4.0;DataSource=C:\myDB.mdb;"
Steve
|
|
|
|
|
Hi every body i need to know how to do one think.So i have to table one is Employer other is customerEmployer.Employer have idEmployer,name.CustomerEmployer have idemplpoyer and idcustomer.
SO my question is please give me query who give it to me employer.name with max customet how to do that???
N.Nikolov
best regards
when i want to read something good just seat and type it
|
|
|
|