Exemple #1
0
Serialize::ID SQLiteService::GetID(const Anope::string &prefix)
{
	/* must be in a deferred or reserved transaction here for atomic row update */

	Query query("SELECT `id` FROM `" + prefix + "id`");
	Serialize::ID id;

	Result res = RunQuery(query);
	if (res.Rows())
	{
		id = convertTo<Serialize::ID>(res.Get(0, "id"));

		Query update_query("UPDATE `" + prefix + "id` SET `id` = `id` + 1");
		RunQuery(update_query);
	}
	else
	{
		id = 0;

		Query insert_query("INSERT INTO `" + prefix + "id` (id) VALUES(@id@)");
		insert_query.SetValue("id", 1);
		RunQuery(insert_query);
	}

	return id;
}
Exemple #2
0
Serialize::ID MySQLService::GetID(const Anope::string &prefix)
{
	Query query("SELECT `id` FROM `" + prefix + "id` FOR UPDATE");
	Serialize::ID id;

	Result res = RunQuery(query);
	if (res.Rows())
	{
		id = convertTo<Serialize::ID>(res.Get(0, "id"));

		Query update_query("UPDATE `" + prefix + "id` SET `id` = `id` + 1");
		RunQuery(update_query);
	}
	else
	{
		id = 0;

		Query insert_query("INSERT INTO `" + prefix + "id` (id) VALUES(@id@)");
		insert_query.SetValue("id", 1);
		RunQuery(insert_query);
	}

	return id;
}