我是SQL的新手,正在寻求一些帮助。我有三个表:author
、study
和caseStudy
(这是一个链接表)。我想实现的是,当数据插入author
和study
表(从web表单)时,如果可能的话,它们的自动增量ID将插入caseStudy
表。我想我需要创建触发器。caseStudy
表中的authorid
和studyid
是一个复合键。表结构如下:
CREATE TABLE `test`.`author` (
`AuthorId` INT(11) NOT NULL AUTO_INCREMENT,
`AuthorTitle` VARCHAR(45) NOT NULL,
PRIMARY KEY (`AuthorId`),
UNIQUE INDEX `AuthorId_UNIQUE` (`AuthorId` ASC));
CREATE TABLE `test`.`study` (
`StudyId` INT(11) NOT NULL AUTO_INCREMENT,
`Title` VARCHAR(45) NOT NULL,
PRIMARY KEY (`StudyId`),
UNIQUE INDEX `StudyId_UNIQUE` (`StudyId` ASC));
CREATE TABLE `test`.`casestudy` (
`AuthorId` INT(11) NOT NULL,
`StudyId` INT(11) NOT NULL,
PRIMARY KEY (`AuthorId`, `StudyId`),
INDEX `StudyId_idx` (`StudyId` ASC),
CONSTRAINT `AuthorId`
FOREIGN KEY (`AuthorId`)
REFERENCES `test`.`author` (`AuthorId`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `StudyId`
FOREIGN KEY (`StudyId`)
REFERENCES `test`.`study` (`StudyId`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);
如有任何建议,我们将不胜感激。谢谢你。
据我所知,author
和study
表之间没有数据链接。没有“一次更新两个表上的一个触发器”这样的功能。实现caseStudy
维护的最佳位置是在web表单处理期间填充author
和study
表的过程中。
在PHP中,可以通过使用mysql_insert_id();
在每个insert
之后收集ID(请参见通过web表单使用PHP将数据插入到多个表中),然后使用它们来更新链接表来完成。
使用mysqli(并假设$mysqli是连接),应该如下所示:
$AuthorTitle = $mysqli->real_escape_string($_POST[AuthorTitle value]);
$mysqli->query("INSERT INTO test.author(AuthorTitle) VALUES('$AuthorTitle')");
$AuthorId = $mysqli->insert_id;
$StudyTitle = $mysqli->real_escape_string($_POST[StudyTitle value]);
$mysqli->query("INSERT INTO test.study(Title) VALUES('$StudyTitle')");
$StudyId = $mysqli->insert_id;
$mysqli->query("INSERT INTO test.casestudy(AuthorId, StudyId) VALUES($AuthorId, $StudyId)");
$AuthorTitle = $mysqli->real_escape_string($_POST[AuthorTitle value]);
$StudyTitle = $mysqli->real_escape_string($_POST[StudyTitle value]);
$mysqli->multi_query("
START TRANSACTION;
INSERT INTO test.author(AuthorTitle) VALUES('$AuthorTitle');
SET @AuthorId = LAST_INSERT_ID();
INSERT INTO test.study(Title) VALUES('$StudyTitle');
SET @StudyId = LAST_INSERT_ID();
INSERT INTO test.casestudy(AuthorId, StudyId) VALUES(@AuthorId, @StudyId);
COMMIT;
");
问题内容: 好的问题是,我必须对两个链接的表中的两个和求和 第一表要点: 第二张表的收入: 现在我试过的是: 但我得到了错误的结果 我想得到这个: 谢谢! 问题答案: 如果要获得每位用户的总收入,则可能应该先确定要为其获得收入的用户。最明智的选择可能是使用users表本身作为基础。 这种方法的附加好处是可以报告没有积分和/或收入的用户。
问题内容: 我了解主键的价值。 我了解索引的价值。 每个 MySQL表都应该有一个自动递增的主键(最好是INT字段类型)吗? 更新 @Raj More的答案似乎是最有效的。但是,我想到的问题是,此自动递增的主键ID将如何与其他表相关。例如: 表格1 表2 在上面的示例中,消费者可以来到该站点并选择注册免费的产品/服务。如果消费者选择,他们可以提供其他信息(存储在表2中)以进行其他邮件发送等。我看到
以下是我现在的声明: 它工作得很好,但会产生一些主键冲突。所以,当输入新行时,我想做的是: 新建主键+佣金表数据+建议书表数据 有什么想法吗?
我试图连接两个表,但似乎有一个问题,我寻找的输出是有主题的行量。
问题内容: 想知道是否存在将新记录插入启用了主键的表中的简写版本?(即不必在查询中包括关键字列)假设关键字列称为ID,其他列为Fname,Lname和Website 问题答案: 使用DEFAULT关键字: 另外,您可以指定列(这是更好的做法): 参考: http://dev.mysql.com/doc/refman/5.6/zh-CN/data-type-defaults.html
我有两个我想使用“主键”链接的工作表。目前,我已经使用函数从Sheet1导入了一些列到Sheet2(例如第一个单元格)。我的目的是完成与Sheet2中每个导入行相关的数据。但是,Sheet1与其他人共享,因此他们可以修改行的内容,而无需删除或修改我在Sheet2中添加的数据(而这在Sheet1中不存在)。 考虑到我的表中有一列“id”可以被视为主键,我如何在sheet2中添加新数据,只要它与“id