我正在嘗試創建通訊錄。並取得了我的表是這樣的:幫助我的表結構
CREATE TABLE `list_`.`contacts` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` tinyint(11) NOT NULL,
`group` varchar(128) NOT NULL,
`first_name` varchar(128) NOT NULL,
`last_name` varchar(128) NOT NULL,
`address` varchar(128) NOT NULL,
`city` varchar(128) NOT NULL,
`state` varchar(2) NOT NULL,
`zip` int(5) NOT NULL,
`phone_number` varchar(16) NOT NULL,
`cell_number` varchar(16) NOT NULL,
`work_number` varchar(16) NOT NULL,
`fax_number` varchar(16) NOT NULL,
`email` varchar(128) NOT NULL,
`company` varchar(55) NOT NULL,
`title` varchar(56) NOT NULL,
`notes` text NOT NULL,
`date_added` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`,`user_id`),
KEY `user_id` (`user_id`),
KEY `group` (`group`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8 AUTO_INCREMENT=9 ;
CREATE TABLE `list_`.`groups` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` tinyint(11) NOT NULL,
`position` int(8) unsigned NOT NULL DEFAULT '0',
`name` varchar(128) NOT NULL,
`date_added` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`,`user_id`),
KEY `user_id` (`user_id`),
KEY `name` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=32 DEFAULT CHARSET=utf8 AUTO_INCREMENT=32 ;
我在這裏的邏輯是,我在contacts
表中的所有聯繫人,從那裏我有一個叫group
,我用它來篩選聯繫人到組列。
然後我有一張名爲groups
的表格,我將使用該表格來跟蹤由特定用戶創建的組,並填寫這些組以便他們可以移動聯繫人。
當組被刪除,我會扔回去不會再讓如果組包含接觸它被刪除的錯誤。我大概可以查詢聯繫人以查看他們屬於哪個組,並且如果他們屬於被刪除的組,那麼我會將他們移動到一個名爲Uncategorized或其他組的組中。
但如果他們選擇接受和刪除組內的所有聯繫人,然後繼續前進,刪除組和屬於該組的所有子行。
我無法在contacts
表格製作我Foreing鍵。無論索引和鍵的組合如何,我仍然無法使其工作。
--
-- Constraints for table `contacts`
--
ALTER TABLE `list_`.`contacts`
ADD CONSTRAINT `contacts_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`),
ADD CONSTRAINT `contacts_ibfk_2` FOREIGN KEY (`group`) REFERENCES `groups` (`name`) ON UPDATE CASCADE;
--
-- Constraints for table `groups`
--
ALTER TABLE `list_`.`groups`
ADD CONSTRAINT `group_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`);
此外,有人可以幫我刪除時和更新。爲了幫我找出我如何可以刪除所有的子行,在groups
是的,對你最後一個問題。雖然我的問題是,當我運行的代碼時,我不斷收到錯誤,說:無法添加或更新子行:外鍵約束失敗('list_'。,CONSTRAINT 'contacts_ibfk_2' FOREIGN KEY('group')REFERENCES'groups'('name')ON DELETE CASCADE) –
Eli
2010-10-11 03:18:20
不,我是說最後兩條語句是反對的。您如何防止刪除擁有聯繫人的羣組,並刪除羣組中的所有聯繫人?該組必須首先沒有聯繫人被刪除。當你得到那個特定的錯誤時,你運行什麼查詢? – 2010-10-11 03:20:24
正是我在我原來的職位,我確實有其他表已經在我的分貝因爲user_id是用戶的外鍵.id – Eli 2010-10-11 03:25:19