Есть ли примеры кодов для удаления данных базы данных и обновления целочисленного значения AUTO_INCREMENT в C#? Пожалуйста, кто-нибудь, помогите :'(
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data.SqlClient; namespace LAB9 { public partial class Delete : System.Web.UI.Page { SqlCommand cmd; SqlConnection conn; protected void Page_Load(object sender, EventArgs e) { } protected void Button1_Click(object sender, EventArgs e) { conn = new SqlConnection(@"Data Source=DESKTOP-2IECU3E\SQLEXPRESS;Initial Catalog=LAB9;Integrated Security=True"); conn.Open(); cmd = new SqlCommand("DELETE FROM Registration WHERE (id = '" + TextBox1.Text + "')", conn); cmd.ExecuteNonQuery(); //cmd = new SqlCommand("SET @num := 0", conn); //cmd = new SqlCommand("UPDATE Registration SET id = @num := (@num + 1)", conn); //cmd.ExecuteNonQuery(); //cmd = new SqlCommand("ALTER TABLE Registration AUTO_INCREMENT = 1", conn); //cmd.ExecuteNonQuery(); Label1.Text = "Data successfully deleted!"; TextBox1.Text = ""; conn.Close(); } } }
Что я уже пробовал:
Я закомментировал строки (как показано выше), которые вызывают проблемы, и данные удаления работают хорошо. Теперь проблема заключается в том, что каждый раз, когда я вставляю следующие данные после удаления данных, идентификатор auto_incremented из идентификатора предыдущих удаленных данных.
Старые данные-это id: 1 > 2 > 3
после удаления данных 3 и вставки новых данных,
То, что я ожидал id: 1 > 2 > 3
В конце id: 1 > 2 > 4
Пожалуйста, научи меня любому сэмпаю
Shambhoo kumar
Использование автоматического приращения не является хорошей практикой программирования. Лучше написать свою собственную логику, а не использовать значение автоматического приращения, и это также возможно, но после удаления вам нужно выполнить команду DBCC вместе с одним запросом обновления для значения поля автоматического приращения.
codetodead
Ты говоришь что-то в этом роде? https://www.codeproject.com/Questions/505381/AutoplusIncrementplusnumberplusinplustextboxplusus
Shambhoo kumar
Существуют различные способы реализации вашей логики. я посылаю какую-то ссылку, объясняющую, почему автоматическое приращение ужасно.
https://www.clever-cloud.com/blog/engineering/2015/05/20/why-auto-increment-is-a-terrible-idea/
CHill60
Я совершенно не согласен с вашим предложением написать свою собственную логику для замены автоинкремента! Это, вероятно, вызовет серьезные проблемы в многопользовательских средах. Если ОП имеет MSSQL 12.0 или выше, то последовательности-это правильный путь вперед SQL Server: последовательности (автономер)[^]
Дискуссия о полях идентичности имеет сторонников с обеих сторон. Есть вещи, которых следует избегать-см. Аарон Бертран : вредные привычки, чтобы пнуть: положить столбец идентичности на каждый стол[^Честно говоря, я думаю, что ссылка, которую вы выбрали, чтобы показать, почему "автоматическое приращение ужасно", представляет собой слабый аргумент. В этом блоге есть лучшая информация о том, почему накладные расходы UUID в качестве первичного ключа могут стоить того Первичные ключи: идентификаторы и идентификаторы GUID[^]
Shambhoo kumar
я согласен, но вместо того, чтобы использовать автоматическое приращение, мы можем реализовать guid.