我有一个叫Create_Group
的表。我想添加一个约束,只有具有user_type人员的人才能在表Create_group
中插入。
CREATE TABLE `User`
(
`user_id` varchar(10) NOT NULL,
`username` varchar(20) NOT NULL,
`user_type` varchar(20) NOT NULL,
CONSTRAINT UC_User UNIQUE (user_id,username)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
ALTER TABLE `User` ADD PRIMARY KEY (`user_id`);
我试过这样做:
CREATE TABLE `Create_Group`
(
`group_id` varchar(10) NOT NULL,
`user_id` varchar(10) NOT NULL,
`group_creator` varchar(20) NOT NULL,
`group_name` varchar(50) NOT NULL,
CONSTRAINT UC_Group UNIQUE (group_id,group_name)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
ALTER TABLE `Create_Group`
ADD PRIMARY KEY (`group_id`),
ADD KEY (`user_id`);
UPDATE `Create_Group`
SET `group_id`,`user_id`,`group_creator`,`group_name`,`date_created`
WHERE (SELECT user_type
FROM User
WHERE `group_creator`=username) = `Staff`
然而,更新不断给我一个错误。
用户输入示例:
INSERT INTO `User` (`user_id`, `username`, `user_type`)
VALUES (UUID(), 'TheDoctor', 'Staff'), (UUID(), 'DoctorStrange', 'User');
Group_Create
的输入示例:
INSERT INTO `Create_Group` (`group_id`, `user_id`, `group_creator`, `group_name`, `date_created`)
SELECT
UUID(),user_id,'TheDoctor','HeroesUnited', CURRENT_TIMESTAMP()
FROM
User
WHERE
username='TheDoctor'
提前致谢!
答案 0 :(得分:0)
您可能正在使用的SQL数据库。此更新似乎不正确,因为没有为其分配值
以下似乎不正确
UPDATE `Create_Group`
SET `group_id`,`user_id`,`group_creator`,`group_name`,`date_created`
WHERE (SELECT user_type
FROM User
WHERE `group_creator`=username) = `Staff`
尝试为SET中的字段分配一些值,如:
请注意,这只是如何更正更新查询的示例:
UPDATE `Create_Group`
SET `group_id` = '1',`user_id` = '2',`group_creator`='3',`group_name`='name',`date_created`='2017-01-01'
WHERE (SELECT user_type
FROM User
WHERE `group_creator`=username) = `Staff`
此外,您应该处理WHERE子句查询。如果子查询将返回多于1条记录
(SELECT user_type FROM User WHERE group_creator=username)
然后更新将失败并显示错误
用作表达式
的子查询返回的多行