|
|
|
Как блокировать дубликаты ID в запись таблиц ?Помогите пожалуйста.
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Собственно такая проблема ,есть 3 таблицы. players ,inventory и mail . Периодически в table3 записываются записи с таким же айди как в первых двух таблицах (не всегда но за день из 10000 записей 5-10 будет дублирующими). Помогает вот такой вот запросы. DELETE FROM `mail` WHERE `mail_unique_id` IN (SELECT `id` FROM `players`); DELETE FROM `mail` WHERE `mail_unique_id` IN (SELECT `item_unique_id` FROM `inventory`); Как можно сделать ,что бы в третью таблицу не поступали такие записи ? Все таблицы работают в innodb ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2013, 17:31:23 |
|
||
|
Как блокировать дубликаты ID в запись таблиц ?Помогите пожалуйста.
|
|||
|---|---|---|---|
|
#18+
Покажите DDL таблиц, опишите их логику, о каком именно дублировании речь и почему это плохо? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2013, 17:38:26 |
|
||
|
Как блокировать дубликаты ID в запись таблиц ?Помогите пожалуйста.
|
|||
|---|---|---|---|
|
#18+
пожалуйста CREATE TABLE `players` ( `id` int(11) NOT NULL, `name` varchar(50) NOT NULL, `account_id` int(11) NOT NULL, `account_name` varchar(50) NOT NULL,, `heading` int(11) NOT NULL, `world_id` int(11) NOT NULL, `world_owner` int(11) NOT NULL DEFAULT '0', `gender` enum('MALE','FEMALE') NOT NULL, `quest_expands` tinyint(1) NOT NULL DEFAULT '0', `npc_expands` tinyint(1) NOT NULL DEFAULT '0', `advenced_stigma_slot_size` tinyint(1) NOT NULL DEFAULT '0', `warehouse_size` tinyint(1) NOT NULL DEFAULT '0', `mailbox_letters` tinyint(4) unsigned NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `name_unique` (`name`), KEY `account_id` (`account_id`), KEY `setPartnerNull` (`partner_id`), CONSTRAINT `setPartnerNull` FOREIGN KEY (`partner_id`) REFERENCES `players` (`id`) ON DELETE SET NULL ON UPDATE NO ACTION ) ENGINE=InnoDB DEFAULT CHARSET=utf8 Вторая CREATE TABLE `inventory` ( `item_unique_id` int(11) NOT NULL, `item_id` int(11) NOT NULL, `item_count` bigint(20) NOT NULL DEFAULT '0', `item_color` int(11) NOT NULL DEFAULT '0', `item_owner` int(11) NOT NULL, `fusioned_item` int(11) NOT NULL DEFAULT '0', `optional_socket` int(1) NOT NULL DEFAULT '0', `optional_fusion_socket` int(1) NOT NULL DEFAULT '0', `charge` mediumint(9) NOT NULL DEFAULT '0', `rnd_bonus` smallint(6) DEFAULT NULL, `unSeal` tinyint(1) NOT NULL DEFAULT '0', PRIMARY KEY (`item_unique_id`), KEY `item_location` (`item_location`), KEY `index3` (`item_owner`,`item_location`,`is_equiped`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 И третья в которую попадают дубликаты CREATE TABLE `mail` ( `mail_unique_id` int(11) NOT NULL, `mail_recipient_id` int(11) NOT NULL, `sender_name` varchar(20) NOT NULL, `mail_title` varchar(20) NOT NULL, `mail_message` varchar(1000) NOT NULL, `unread` tinyint(4) NOT NULL DEFAULT '1', `attached_item_id` int(11) NOT NULL, `attached_kinah_count` bigint(20) NOT NULL, `express` tinyint(4) NOT NULL DEFAULT '0', `recieved_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`mail_unique_id`), KEY `mail_recipient_id` (`mail_recipient_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2013, 19:49:35 |
|
||
|
Как блокировать дубликаты ID в запись таблиц ?Помогите пожалуйста.
|
|||
|---|---|---|---|
|
#18+
miksoftопишите их логику, о каком именно дублировании речь и почему это плохо?внешних ключей на таблицах нет, так что догадаться о том, что это за "мэйл" такой и почему дубликаты в нём не есть гуд (и что это вообще за "дубликаты"), малореально без дополнительных разъяснений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2013, 19:52:23 |
|
||
|
Как блокировать дубликаты ID в запись таблиц ?Помогите пожалуйста.
|
|||
|---|---|---|---|
|
#18+
На таблице mail изначально был ключ CONSTRAINT `FK_mail` FOREIGN KEY (`mail_recipient_id`) REFERENCES `players` (`id`) ON DELETE CASCADE. Его удалили думали он возможно создает ее но не помогло. Объясняю. Это таблици игрового сервера. Собственно сервер выдает ошибку ,что мол ID FACTORY такой то ID erorr и не может запуститься . Приходиться выполнять вон те запросы которые я в 1 сообщение написал и все нормально работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2013, 20:04:50 |
|
||
|
Как блокировать дубликаты ID в запись таблиц ?Помогите пожалуйста.
|
|||
|---|---|---|---|
|
#18+
yannet. Его удалили думали он возможно создает ее но не помогло.кого/что "её"? ошибку, что ли? yannetСобственно сервер выдает ошибку ,что мол ID FACTORY такой то ID erorr и не может запуститьсятак может, спросить у разработчиков "сервера", что значит эта ошибка и как её исправить? А ваши запросы тупо удаляют из таблицы "мэйл" всё , что может быть связано с другими двумя таблицами (по крайней мере судя по тексту запросов, т.к. логика всего этого так и осталась тайной, покрытой мраком) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2013, 20:10:19 |
|
||
|
Как блокировать дубликаты ID в запись таблиц ?Помогите пожалуйста.
|
|||
|---|---|---|---|
|
#18+
Ошибка эта значит ,что в таблицах баззы данных в данном случае трьех этих таблиц где-то одинаковый айди и сервер не может считать одинаковые ID помогает удаления дублирующих . ТО есть в таблице mail создался такой же айди как в players /inventory ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2013, 20:48:11 |
|
||
|
Как блокировать дубликаты ID в запись таблиц ?Помогите пожалуйста.
|
|||
|---|---|---|---|
|
#18+
ребята вот суть проблемы. Записи в таблицу mail в mail_unique_id такие же числа которые уже есть в таблице inventory (item_unique_id) .Собственно как можно добавить что-то типо такого ключа CONSTRAINT `dublicat` FOREIGN KEY (`mail_unique_id`) REFERENCES `inventory` (`item_unique_id`) ON DELETE CASCADE ?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2013, 02:48:55 |
|
||
|
Как блокировать дубликаты ID в запись таблиц ?Помогите пожалуйста.
|
|||
|---|---|---|---|
|
#18+
То есть такой ключ только наоборот ,что бы не было такого id в таблице invenory (item_unique_id) . Если нету ,то значит хорошо запись проходит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2013, 03:02:59 |
|
||
|
Как блокировать дубликаты ID в запись таблиц ?Помогите пожалуйста.
|
|||
|---|---|---|---|
|
#18+
yannet, это такой глобальный айди, что ли? один на три (или больше) таблицы? ну разве что триггер before update, в нём искать вводимый ключ в других таблицах, если нашли - вызывать ошибку... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2013, 08:28:25 |
|
||
|
Как блокировать дубликаты ID в запись таблиц ?Помогите пожалуйста.
|
|||
|---|---|---|---|
|
#18+
Требование единого уникального идентифицирующего признака для разных сущностей, являющегося одновременно первичным ключом таблиц, свидетельствует об ошибке проектирования. Разделите эти функции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2013, 08:37:05 |
|
||
|
Как блокировать дубликаты ID в запись таблиц ?Помогите пожалуйста.
|
|||
|---|---|---|---|
|
#18+
yannet, Пробежаться про проекту и заменить доставание id последней записи на select last_insert_id(); если id как-то вычисляется, заменить все его вычисления, на потокобезопасные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2013, 12:23:34 |
|
||
|
|

start [/forum/topic.php?fid=47&gotonew=1&tid=1836109]: |
0ms |
get settings: |
8ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
46ms |
get topic data: |
14ms |
get first new msg: |
9ms |
get forum data: |
3ms |
get page messages: |
67ms |
get tp. blocked users: |
2ms |
| others: | 235ms |
| total: | 412ms |

| 0 / 0 |
