Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Utworzyć procedurę składowaną do dodania z automatycznym przyrostem jako polem podstawowym?

Najlepiej byłoby po prostu uczynić TagID polem tożsamości, zmieniając definicję tabeli. Jeśli nie możesz tego zrobić, następnym najlepszym rozwiązaniem byłoby:

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

Transakcja zapewnia, że ​​nie otrzymasz unikalnych identyfikatorów TagID, a połączenie obsługuje szczególny przypadek, w którym tabela jest pusta i daje początkową wartość 1.

EDYTUJ:

W oparciu o zmianę w pierwotnym pytaniu tabela zawiera już kolumnę tożsamości, więc procedura składowana powinna wyglądać następująco:

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

a Twój kod C# powinien być

int IDTag =int.Parse(txtTagID.Tekst); //To powinno zniknąć, więc 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. Konwertuj numer miesiąca na funkcję nazwy miesiąca w SQL

  2. Java JDBC:daty konsekwentnie dwa dni wolne

  3. Zastąp Optymalizator zapytań dla połączeń T-SQL za pomocą FORCEPLAN

  4. Jak wyeksportować XML za pomocą zapytania SQL Server?

  5. Serwer Ms sql - przypisanie daty do zmiennej