SQL CE, как предотвратить повторную вставку - PullRequest
0 голосов
/ 08 мая 2018
SqlCeCommand command = new SqlCeCommand(@"INSERT INTO fpl_table 
                                                    (FLIGHT_ID, BPN_TIME, BPX_TIME, DAY_NB) 
                                                    VALUES (@FLIGHT_ID, @BPN_TIME, @BPX_TIME, @DAY_NB)
                                                    ON DUBLICATE UPDATE FLIGHT_ID = @FLIGHT_ID, BPN_TIME=@BPN_TIME,BPX_TIME=@BPX_TIME,DAY_NB=@DAY_NB"
                                                    ,connection);

command.Parameters.AddWithValue("FLIGHT_ID", format);
command.Parameters.AddWithValue("BPN_TIME", format1);
command.Parameters.AddWithValue("BPX_TIME", format2);
command.Parameters.AddWithValue("DAY_NB", format3);

Привет всем!

У меня проблема с вставкой 4 значений в столбцы. Я хочу запретить вставку 4 существующих столбцов в базу данных, я не могу установить их уникальность, потому что этот же столбец может быть вставлен с другими 1,2 или 3 столбцами, я просто хочу предотвратить вставку только 4 существующих столбцов.

Ответы [ 3 ]

0 голосов
/ 08 мая 2018

Почему бы вам не использовать отдельную функцию, чтобы сначала найти дублирующиеся записи.

bool CheckDuplicateFlight(int FLIGHT_ID)
{
SqlConnection con = new SqlConnection();
con.ConnectionString = @"YOURCONNECTION STRING";
con.Open();
if (con.State == System.Data.ConnectionState.Open)
{
SqlCeCommand cmd = new SqlCeCommand("select count(*) from YOURTABLE where FLIGHT_ID= @FLIGHT_ID", con);
cmd.Connection = con;
cmd.CommandType = System.Data.CommandType.Text;
cmd.Parameters.AddWithValue("@FLIGHT_ID",FLIGHT_ID);
int ExistingId= Convert.ToInt32(cmd.ExecuteScalar());
}
con.Close();
if(ExistingId> 0)
    return true;
return false;
}
if(CheckDuplicateFlight(FLIGHT_ID))
{
///// Your insertion/Update Code here
}

Но Ваш вопрос немного сбивает с толку. Вы уверены, что хотите вставить запись вместо обновления ??? Запрос на вставку всегда вставляет новую запись.

0 голосов
/ 08 мая 2018

Вам необходимо добавить уникальные ограничения в 3 столбца, а затем, используя обработку исключений в своем коде, вставить новую запись.

0 голосов
/ 08 мая 2018

Вы можете добавить уникальное ограничение на 4 столбца

CONSTRAINT UC_unique UNIQUE (col1, col2, col3, col4)

https://www.w3schools.com/sql/sql_unique.asp

...