Intereting Posts
Oracle Riddle, используя «IN» против использования «Or», SQL Sum с Sub Query? Как скопировать таблицу Redshift, но добавить к ней столбец сортировки? уникальная пара в базе данных «дружбы» Проблема с поиском поискового запроса Тип 'System.Web.UI.WebControls.SessionParameter' не имеет открытого свойства с именем 'DbType' Самый эффективный код для установки столбца порядка сортировки / назначение последовательной серии чисел столбцу? Данные столбцов таблицы сводных данных MySQL в виде строк Дизайн базы данных для повторяющихся событий с исключениями Исключение java.sql.SQLException: Неверное строковое значение: '\ xF0 \ x9F \ x92 \ xBC' для столбца 'Rins' в строке 1 at SELECT с использованием пункта UNION SQL Injection Prevention в .NET postgres возвращает id, вставляет или выбирает, присутствует ли id или нет Ms Access 2010 с предложением where в C # Мне нужен запрос sql для группировки по имени, но возвращать другие поля на основе самой последней записи

Сделать один ID с auto_increment в зависимости от другого ID – возможно?

Я хочу создать небольшую систему билетов для проектного сервера с несколькими проектами. Пока TicketID будет засчитан глобально, т.е. есть проект A и билет с TicketID 1 и другой проект B, и билет для этого проекта получит TicketID 2 – вот так:

(TicketID, ProjectID) (1, 1) (2, 1) (3, 1) (4, 2) (5, 2) (6, 3) 

Но я думаю, что было бы лучше подсчитать TicketID в зависимости от ProjectID, например:

 (TicketID, ProjectID) (1, 1) (2, 1) (3, 1) (1, 2) (2, 2) (1, 3) 

Здесь таблица:

 CREATE TABLE IF NOT EXISTS tickets ( TicketID INT UNSIGNED NOT NULL AUTO_INCREMENT, ProjectID INT UNSIGNED NOT NULL, ... PRIMARY KEY (TicketID, ProjectID) , FOREIGN KEY (ProjectID) REFERENCES projects (ProjectId), ... ); 

Возможно ли сделать TicketID с auto_increment в зависимости от ProjectID с SQL? Или нет никакого пути с SQL, и я должен установить идентификаторы с помощью своего PHP-кода вручную?

Почему бы не иметь поле «следующий идентификатор бита» в таблице проекта – при создании нового билета, получить это значение, увеличить его и установить идентификатор билета на предыдущее значение? Все в сделке, очевидно.

MySQL поддерживает это:

 create table history ( id integer not null, version integer auto_increment not null, content text not null, primary key(id,version) ); 

Насколько я знаю, в Sqlite или PostgreSQL нет прямой поддержки такой функции, поэтому я просто использую:

 insert into history(id,version,content) select 10,(SELECT COALESCE(MAX(version),0)+1 FROM history WHERE id=10),'Hello'; 

Для них, но помните, что это не настоящий автоинкремент и может создавать не уникальные ключи, если вы удаляете что-то из таблицы.

Честно говоря, я обычно пытаюсь убедить сторонников в этом. Наличие уникальной нумерации билетов может быть лучше, вам нужно только запомнить / распечатать / отобразить одну часть информации. Пока вы предоставляете списки и количество билетов, я думаю, что это гораздо более четкая структура. Конечно, ваша бизнес-логика может потребовать отдельной нумерации. Если требуется прямая линия без прерывания, я обычно использую триггеры. М.