Eror消息我在我的表進行更新時,有一個SQL錯誤
消息2601,級別14,狀態1,行 不能在對象'dbo.RTU_ADDRESS具有唯一索引「唯一鍵插入重複鍵行RTU」。重複的鍵值是(2,5,4,6,500,610,IUY)。 該聲明已被終止。
腳本爲表
USE [hts]
GO
/****** Object: Table [dbo].[RTU_ADDRESS] Script Date: 03/19/2013 21:07:19 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[RTU_ADDRESS](
[RowNo] [int] IDENTITY(1,1) NOT NULL,
[StationId] [int] NULL,
[SystemId] [int] NULL,
[CCNumber] [int] NULL,
[LineNumber] [int] NULL,
[RTUNumber] [int] NULL,
[SRTUNumber] [int] NULL,
[Description] [char](100) NOT NULL,
[SDescription] [char](100) NOT NULL,
[Area_ID] [char](10) NOT NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
腳本的指標
USE [hts]
GO
/****** Object: Index [Unique Key RTU] Script Date: 03/19/2013 21:08:31 ******/
CREATE UNIQUE NONCLUSTERED INDEX [Unique Key RTU] ON [dbo].[RTU_ADDRESS]
(
[StationId] ASC,
[SystemId] ASC,
[CCNumber] ASC,
[LineNumber] ASC,
[RTUNumber] ASC,
[SRTUNumber] ASC,
[Area_ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
C#代碼:
SqlDataAdapter sqlAdapter = null;
strSelectCmd = "SELECT RowNo FROM RTU_ADDRESS";
SqlCommand sqlCmd = new SqlCommand();
sqlCmd.Connection = m_SqlConn;
sqlCmd.CommandText = strSelectCmd;
int i = Convert.ToInt32(sqlCmd.ExecuteScalar());
sqlAdapter = new SqlDataAdapter();
sqlAdapter.SelectCommand = sqlCmd;
strInsCmd = "UPDATE RTU_ADDRESS SET RTUNumber='" + rtunum.Text + "', SRTUNumber='" + srtunum.Text + "', Description='" + desc.Text + "', SDescription='" + sdesc.Text + "' WHERE Area_ID='" + area_ID.Text + "' AND StationId='" + station.Text + "' AND SystemId='" + sys.Text + "' AND CCNumber='" + ccnum.Text + "' AND LineNumber='" + linenum.Text + "'";
strErrorMsg = Utilities.ExecuteSQLCommand(m_SqlConn, strInsCmd);
string check = "duplicate";
bool d = check.Any(strErrorMsg.Contains);
if (d == true)
{
MessageBox.Show(" Duplicates Entries Found", "Database Insertion");
}
else if (string.IsNullOrEmpty(strErrorMsg) == false)
{
MessageBox.Show(this, "Error!Unable to Add New RTU Configurations!", "RTU Configurations error");
}
else
{
d = false;
this.Close();
}
我現在失去了做什麼,我沒有把任何重複。
我只想更新RTUNumber,SRTUNumber,Description和SDescription,同時保持我的stationID,systemID,CCNumber,LineNumber和Area_ID不變。請幫助
UPDATE: Select語句
SELECT * FROM RTU_ADDRESS WHERE AREA_ID = 'IUY' AND的stationID = '2' 和SYSTEMID = '5' 和CCNumber = '4' 和LineNumber上= '6'
給我2個結果,但RTUNumber和SRTUNumber是不同的。
請幫
原諒我在這裏的無知,但爲什麼你有這樣一個巨大的PK指數呢? – Paul 2013-03-19 17:16:15
RTUNumber,SRTUNumber是唯一索引的一部分,您可嘗試將它們更新到已經在表和錯誤不撒謊:) – 2013-03-19 17:16:30
但我不能改變的唯一索引值,所以我應如何從這裏出發? – user2177829 2013-03-19 17:24:42