вы дойдете до вставки дорожек для данного компакт-диска, вам потребуется знать ID, который использовался при вставке записи о компакт-диске. Вы сделали поле автоматически наращиваемым, поэтому база данных автоматически присвоила ID, но вам нужно явно извлечь это значение. Как было показано ранее в этой главе, сделать это можно с помощью функции
LAST_INSERT_ID
.
res = mysql_query(&my_connection, "SELECT LAST_INSERT_ID");
He стоит беспокоиться о других программах-клиентах, вставляющих компакт-диски в это же время, и о возможной путанице поступающих номеров ID; СУРБД MySQL запоминает присвоенный ID для каждого подключения, поэтому, даже если другое приложение вставило компакт-диск прежде, чем вы извлекли ID, вы все равно получите номер, соответствующий вашей строке, а не строке, добавленной другим приложением.
И последнее, но не по степени важности, установите ID вновь добавленной строки и верните код успешного или аварийного завершения:
*cd_id = new_cd_id;
if (new_cd_id != -1) return 1;
return 0;
}
} /* add_cd */
Теперь посмотрите реализацию функции
get_artist_id
; процесс очень похож на вставку записи о компакт-диске:
/* Поиск или создание artist_id для заданной строки */
static int get_artist_id(char *artist) {
MYSQL_RES *res_ptr;
MYSQL_ROW mysqlrow;
int res;
char qs[250];
char is[250];
char es[250];
int artist_id = -1;
/*
Он уже существует? */
mysql_escape string(es, artist, strlen(artist));
sprintf(qs, "SELECT id FROM artist WHERE name = '%s'", es);