title: Visual Studio says im trying to insert NULL into the "id" record of the "Cars_details" table
body: <p>I am writing a program for a university class, and i got stuck. Im having 2 tables, and i want to insert data into them with one text.</p>
  
  <p><strong>Cars</strong>  </p>
  
  <ul>
  <li>id INT NOT NULL PRIMARY KEY, IDENTITY(1,1)</li>
  <li>userId INT NOT NULL  FOREIGN KEY Users(id)  </li>
  </ul>
  
  <p><strong>Car_Details</strong>  </p>
  
  <ul>
  <li>id INT NOT NULL PRIMARY KEY, FOREIGN KEY Cars(id)  </li>
  <li>name varchar(250) NOT NULL  </li>
  <li>body_type VARCHAR(250) NOT NULL,  </li>
  <li>fuel_type VARCHAR(250) NOT NULL,  </li>
  <li>motor_power VARCHAR(250) NOT NULL,  </li>
  <li>manufacture_year INT NOT NULL  </li>
  </ul>
  
  <p>It is saying that I am trying to insert NULL value for the id record in the <code>Car_Details</code> table. Down below i wrote my method, how did i try to do it.</p>
  
  <p>Tried doing it with transaction, but that did not work also.</p>
  
  <pre><code>public int Insert(Record record)
  {
          SqlCommand command = new SqlCommand();
          command.CommandType = System.Data.CommandType.Text;
          //command.CommandText = @"INSERT INTO Cars(userId)
          //                        VALUES ((SELECT id FROM Users WHERE id = Users.id));
          //                        INSERT INTO Car_Details(id, name, body_type, fuel_type, motor_power, manufacture_year)
          //                        VALUES ((SELECT TOP 1 id FROM Cars),@name, @body_type, @fuel_type, @motor_power, @manufacture_year);";
  
          command.CommandText = "SET XACT_ABORT ON BEGIN TRANSACTION DECLARE @CarID int 
    INSERT INTO Cars(userID) VALUES((SELECT id FROM Users WHERE id = Users.id))" +
              "SELECT @CarID = scope_identity()" +
              "INSERT INTO Car_Details VALUES(@CarID, @name, @body_type" + 
              "@fuel_type, @motor_power, @manufacture_year)" +
              "COMMIT";
                      //SqlParameter p_id = new SqlParameter();
                      //p_id.ParameterName = "@id";
                      //p_id.SqlDbType = System.Data.SqlDbType.Int;
                      //p_id.Direction = System.Data.ParameterDirection.Input;
                      //p_id.Value = (record as CarRecord).Id;
                      //command.Parameters.Add(p_id);
  
          SqlParameter p_name = new SqlParameter();
          p_name.ParameterName = "@name";
          p_name.SqlDbType = System.Data.SqlDbType.Char;
          p_name.Direction = System.Data.ParameterDirection.Input;
          p_name.Value = (record as CarRecord).Name;
          command.Parameters.Add(p_name);
  
          SqlParameter p_body_type = new SqlParameter();
          p_body_type.ParameterName = "@body_type";
          p_body_type.SqlDbType = System.Data.SqlDbType.VarChar;
          p_body_type.Direction = System.Data.ParameterDirection.Input;
          p_body_type.Value = (record as CarRecord).Body_type;
          command.Parameters.Add(p_body_type);
  
          SqlParameter p_fuel_type = new SqlParameter();
          p_fuel_type.ParameterName = "@fuel_type";
          p_fuel_type.SqlDbType = System.Data.SqlDbType.VarChar;
          p_fuel_type.Direction = System.Data.ParameterDirection.Input;
          p_fuel_type.Value = (record as CarRecord).Fuel_type;
          command.Parameters.Add(p_fuel_type);
  
          SqlParameter p_motor_power = new SqlParameter();
          p_motor_power.ParameterName = "@motor_power";
          p_motor_power.SqlDbType = System.Data.SqlDbType.Int;
          p_motor_power.Direction = System.Data.ParameterDirection.Input;
          p_motor_power.Value = (record as CarRecord).Motor_power;
          command.Parameters.Add(p_motor_power);
  
          SqlParameter p_manufactrue_year = new SqlParameter();
          p_manufactrue_year.ParameterName = "@manufacture_year";
          p_manufactrue_year.SqlDbType = System.Data.SqlDbType.Int;
          p_manufactrue_year.Direction = System.Data.ParameterDirection.Input;
          p_manufactrue_year.Value = (record as CarRecord).Manufacture_year;
          command.Parameters.Add(p_manufactrue_year);
  
  
          command.Connection = getConnection();
  
          int affectedRows = command.ExecuteNonQuery();
          command.Connection.Close();
  
          return affectedRows;
  }
  </code></pre>