Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Tạo thủ tục được lưu trữ để thêm với tăng tự động làm trường chính của nó?

Lý tưởng nhất là bạn chỉ đặt TagID làm trường nhận dạng bằng cách thay đổi định nghĩa bảng. Nếu bạn không thể làm điều đó, cách tốt nhất tiếp theo là:

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

Giao dịch đảm bảo rằng bạn không kết thúc với các TagID duy nhất và liên kết xử lý trường hợp đặc biệt trong đó bảng trống và cung cấp giá trị ban đầu là 1.

CHỈNH SỬA:

Dựa trên sự thay đổi đối với câu hỏi ban đầu của bạn, bảng đã có một cột nhận dạng, vì vậy thủ tục được lưu trữ của bạn sẽ là:

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

và mã C # của bạn phải là

int TagID =int.Parse (txtTagID.Text); // Điều này sẽ biến mất nên 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. SQL DELETE với INNER JOIN

  2. Cách tạo cơ sở dữ liệu trực tuyến từ chế độ khôi phục trong SQL Server

  3. Lệnh gọi không đồng bộ của một thủ tục được lưu trữ trên Máy chủ SQL trong C #

  4. Chuyển từ điển <string, int> sang thủ tục lưu trữ T-SQL

  5. Nhận ID của các bản ghi được chèn lần cuối