Как увеличить значение столбца Id MySQL на 1 с PowerShell - PullRequest
0 голосов
/ 22 апреля 2020

Мой скрипт работает, и я могу ввести нужное значение в базу данных MySQL. Этот сценарий будет выполняться по расписанию, и мне нужно, чтобы поле идентификатора увеличивалось на 1. Я попробовал простое начальное значение 1, присвоенное переменной и ++, но значение не сохраняется в памяти, и, вероятно, есть лучший способ чтобы это произошло. Вот с чем я работаю. Мне нужно, чтобы значение в столбце ID увеличивалось до 1 каждый раз, когда этот скрипт запускает и обновляет базу данных.

[void][System.Reflection.Assembly]::LoadWithPartialName("MySql.Data")
$constr = "server=127.0.0.1;port=3306;database=mydb;user id=root;password=P@ssw0rd"
$con = New-Object MySql.Data.MySqlclient.MySqlConnection
$con.ConnectionString = $constr
$con.Open()
$cmd = New-Object MySql.Data.MySqlClient.MySqlCommand
$cmd.CommandText = "INSERT INTO test VALUES(@id, @text, @date, @datetime)"
$cmd.Connection = $con
$cmd.Prepare()
$today = get-date
$cmd.Parameters("@id").Value = 1
$cmd.Parameters.AddWithValue("@id", 1)
$cmd.Parameters.AddWithValue("@text", $totalSessions.count)
$cmd.Parameters.AddWithValue("@date", $today)
$cmd.Parameters.AddWithValue("@datetime", $today)
$cmd.ExecuteNonQuery()
$con.close()

output

mysql> select * from test;
+------+------------+------------+---------------------+
| id   | text       | date_val   | date_time           |
+------+------------+------------+---------------------+
|    1 | Text Value | 2020-04-21 | 2020-04-21 15:54:54 |
|    1 | Text Value | 2020-04-21 | 2020-04-21 15:57:05 |
|    1 | Text Value | 2020-04-21 | 2020-04-21 16:02:12 |
+------+------------+------------+---------------------+
3 rows in set (0.00 sec)

Ответы [ 2 ]

0 голосов
/ 22 апреля 2020

Вы можете установить для столбца ID автоматическое увеличение, тогда вам нужно только беспокоиться о добавлении новых строк, а MySQL сделает все остальное.

mysql> create table NextIdDemo
   -> (
   -> id int auto_increment,
   -> primary key(id)
   -> );

Если база данных уже активна и Вы не хотите удалять и создавать заново, вы можете просто обновить столбец следующим образом:

ALTER TABLE your_table MODIFY COLUMN test_col_id INT auto_increment

Отметьте в этом примере , если вам нужна дополнительная информация.

0 голосов
/ 22 апреля 2020

Если вы можете жить с постоянно растущей id, что может иметь пробелы , самый простой вариант - объявить этот столбец как auto_increment:

create table test (
    myid int auto_increment primary key,
    mytext varchar(50),
    mydate date,
    mydatetime datetime
);

С другой стороны С другой стороны, если вам нужен строго инкрементный идентификатор, другое решение - извлечь максимальное значение из самой таблицы, используя запрос insert ... select ...:

insert into test(myid, mytext, mydate, mydatetime)
select coalesce(max(myid), 0) + 1, @text, @date, @datetime
from test
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...