У меня вопрос. У меня есть таблица пользователей с двумя идентификаторами полей, которые уже являются первичным ключом и автоматическим приращением, однако у меня есть другое поле, которое называется user_id, которое является отдельным, что мне нужно будет автоматически увеличивать но первая вставленная строка будет иметь значение 10000 в db и приращение после этого.Возрастающий идентификатор пользователя
Вот моя функция до сих пор для создания пользователя в базе данных. Как я могу использовать как можно меньше кода, если он вставляет первую строку как 10000, а затем добавляет 1 после этого.
/**
* Create new user record
*
* @param array
* @param bool
* @return array
*/
function create_user($data)
{
$data['created'] = date('Y-m-d H:i:s');
$this->db->set('username', $data['username']);
$this->db->set('password', $data['password']);
$this->db->set('password2', $data['password2']);
$this->db->set('email', $data['email']);
$this->db->set('first_name', $data['first_name']);
$this->db->set('last_name', $data['last_name']);
$query = $this->db->insert('users');
if ($query)
{
$user_id = $this->db->insert_id();
if ($activated) $this->create_profile($user_id);
return array('user_id' => $user_id);
}
return NULL;
}
Это проще всего сделать непосредственно с базой данных, а не через вашу инфраструктуру. Кроме того, вы можете иметь только один столбец автоматического увеличения для каждой таблицы. –
Согласовано w/@ BrianDriscoll. Вы можете добиться этого в MySQL, например, создав «user_id» автоинкрементный ключ (Google it). Имейте в виду, что PHP ограничен одним потоком, поэтому, если вы можете, скажем, иметь глобальный инкремент '$ user_id', он будет длиться только для текущего потока выполнения, а затем сбросить его при следующем запуске скрипта. – buley