Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Buat prosedur tersimpan untuk ditambahkan dengan kenaikan otomatis sebagai bidang utamanya?

Idealnya Anda hanya akan menjadikan TagID sebagai bidang identitas dengan mengubah definisi tabel. Jika Anda tidak dapat melakukannya, cara terbaik berikutnya adalah:

CREATE PROCEDURE [dbo].[InsertTagProcdure]
       @Value nvarchar(200), 
       @TagCount nvarchar(200) 
AS
BEGIN
    BEGIN TRANSACTION
        DECLARE @TagID int;
        SELECT @TagID = coalesce((select max(TagID) + 1 from Tag), 1)
    COMMIT      
    INSERT INTO 
        Tag 
        (TagID,Value,TagCount) 
        VALUES 
        (@TagID,@Value,@TagCount)
END

Transaksi memastikan bahwa Anda tidak berakhir dengan TagID unik dan penggabungan menangani kasus khusus di mana tabel kosong dan memberikan nilai awal 1.

EDIT:

Berdasarkan perubahan pada pertanyaan awal Anda, tabel sudah memiliki kolom identitas sehingga prosedur tersimpan Anda seharusnya:

CREATE PROCEDURE [dbo].[InsertTagProcdure]
       @Value nvarchar(200), 
       @TagCount nvarchar(200) 
AS
BEGIN
    INSERT INTO Tag (Value,TagCount) VALUES (@Value,@TagCount)
END

dan kode C# Anda seharusnya

int TagID =int.Parse(txtTagID.Teks); //Ini akan hilang jadi auto increment.String Value =txtValue.Text;int TagCount =int.Parse(txtCount.Text);

        using (var conn = new SqlConnection(Properties.Settings.Default.DBConnectionString))
        using (var cmd = conn.CreateCommand())
        {
                conn.Open();
                cmd.CommandText = "InsertTagProcdure";
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("@Value", Value);
                cmd.Parameters.AddWithValue("@TagCount", TagCount);
                cmd.ExecuteNonQuery();
            }


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara membuat daftar yang dipisahkan koma menggunakan kueri SQL?

  2. Membuat Tabel di SQL Server (T-SQL)

  3. SQL mengonversi 'DDMMYY' ke datetime

  4. Bisakah saya menggunakan banyak kursor pada satu koneksi dengan pyodbc dan MS SQL Server?

  5. Kata Kunci Tidak Didukung:Metadata