我正在使用触发器函数将数据写入Postgresql 9.1中的新表.现在一切正常,但我得到了重复.我可以使用外键约束来防止生成重复项吗?我之前没有使用外键约束.
这是表结构
DROP TABLE "obx" CASCADE;
CREATE TABLE "obx" (
"obxID" serial primary key,
"Pid" varchar,
"Sid" varchar,
"SidOrig" varchar,
"Parameter" varchar,
"Result" varchar,
"ResultOrig" varchar,
"Units" varchar,
"RefRange" varchar,
"Flag" varchar,
"FlagOrig" varchar,
"OperatorID" varchar,
"ObsTime" char(14),
"MsgTime" char(14),
"UnixTime" int4,
"Analyzer" varchar,
"Segment" varchar
);
DROP TABLE "testcode" CASCADE;
CREATE TABLE "testcode" (
"TcodeID" serial primary key,
"Analyzer" varchar,
"Parameter" varchar,
"TestName" varchar,
"ShortTestName" varchar,
"TestID" int4
) ;
DROP TABLE "finaldata" CASCADE;
CREATE TABLE "finaldata" ( …Run Code Online (Sandbox Code Playgroud) CREATE TABLE `assessmentbookdb`.`MCQs` (
`id` INT NOT NULL AUTO_INCREMENT ,
`MCQAnswer` VARCHAR(200) NOT NULL ,
`QuestionID` INT NOT NULL ,
PRIMARY KEY (`id`) ,
INDEX `QuestionID` (`QuestionID` ASC) ,
CONSTRAINT `QuestionID`
FOREIGN KEY (`QuestionID` )
REFERENCES `assessmentbookdb`.`Question` (`QuestionID` )
ON DELETE CASCADE
ON UPDATE CASCADE)
ENGINE = InnoDB;
Run Code Online (Sandbox Code Playgroud)
消息日志:
错误1005:无法创建表'assessmentbookdb.mcqs'(错误号:121)SQL语句:
CREATE TABLE `assessmentbookdb`.`MCQs` (
`id` INT NOT NULL AUTO_INCREMENT ,
`MCQAnswer` VARCHAR(200) NOT NULL ,
`QuestionID` INT NOT NULL ,
PRIMARY KEY (`id`) ,
INDEX `QuestionID` (`QuestionID` ASC) ,
CONSTRAINT …Run Code Online (Sandbox Code Playgroud) 我用MySQL工作台设计了模式.
但它无法完成Database Synchronize.It可以创建没有外键的表.
我从MySQL WorkBench复制SQL以在phpmysqadmin中执行.
CREATE TABLE IF NOT EXISTS `Books`.`Users` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
`mail` VARCHAR(45) NOT NULL ,
`password` VARCHAR(45) NOT NULL ,
`smspassword` VARCHAR(8) NULL ,
`mobile` VARCHAR(16) NULL ,
`type` ENUM('admin','secretery','groupadmin','user') NOT NULL DEFAULT 'user' ,
`securelogin` ENUM('true','false') NULL DEFAULT 'true' ,
PRIMARY KEY (`id`) ,
UNIQUE INDEX `id_UNIQUE` (`id` ASC) ,
UNIQUE INDEX `mail_UNIQUE` (`mail` ASC) )
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_unicode_ci
COMMENT = 'Table …Run Code Online (Sandbox Code Playgroud) 我收到这个错误:
您的SQL语法有错误; 检查与你的MySQL服务器版本相对应的手册,以便在''JOIN`-- shirt`link```-- shirt``````````````````````````````````````````````````````````````````````````
我现在已经梳理了近半个小时,无法弄明白.有人可以指出我吗?这是代码.
SELECT
`shirts`.`shirt_name`,
`shirts`.`men` AS `main_photo`,
GROUP_CONCAT ( `shirt_sizes`.`size_name` ) AS `sizes`
FROM
`shirts`
JOIN
`shirts_link` ON `shirts_link`.`shirt_id`=`shirts`.`id`
JOIN
`shirt_sizes` ON `shirt_sizes`.`id`=`shirts_link`.`size_id`
JOIN
`shirt_prices` ON `shirt_prices`.`id`=`shirts_link`.`price_id`
WHERE `men`!=''
GROUP BY
`shirt_prices`.`price_cat`
Run Code Online (Sandbox Code Playgroud)
如果问题比这个脚本更深入,这里是我试图联系在一起的其他表.
衬衫表
CREATE TABLE shirts (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL,
shirt_name VARCHAR(20) NOT NULL,
men VARCHAR(10) NULL,
women VARCHAR(10) NULL,
boys VARCHAR(10) NULL,
girls VARCHAR(10) NULL,
babies VARCHAR(10) NULL,
)ENGINE=INNODB;
INSERT INTO shirts(shirt_name,men,women,boys,girls,babies) VALUES
('Crewneck Tee','me_crn','wo_crn','bo_crn','gi_crn','ba_crn'),
('V-Neck Tee','me_vnc','wo_vnc','','',''),
('Scoop Neck …Run Code Online (Sandbox Code Playgroud) 我正在使用PHP MySQL,并尝试将一个外键添加到一个名为代理的表中,该表名为AreaID,该列应该是表区域ID PK区域的外键.我使用了这个查询,虽然它在添加链接到其他表的外键时起作用,但它无法链接到区域表.
ALTER TABLE properties
ADD FOREIGN KEY (AreaID)
REFERENCES area(AreaID)
Run Code Online (Sandbox Code Playgroud)
我复活的错误是:
ALTER TABLE properties ADD FOREIGN KEY ( AreaID ) REFERENCES AREA( AreaID )
Run Code Online (Sandbox Code Playgroud)
MySQL说:
1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'area(AreaID)' at line 3
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
我需要通过比较两个外键来在Django中创建一个过滤器.双下划线语法仅适用于等式的左侧.因此,右侧的任何内容都会引发错误:
match = UserProfile.objects.filter(
user__date_joined__gte = group__date
)
Run Code Online (Sandbox Code Playgroud)
Django(或python here)不会将group_ date解释为可解析的变量名,并抱怨它没有定义.我可以切换变量,然后用户 _date_joined将是未定义的.(这里的变量名只是一个例子)
我想要实现的内容在SQL中看起来像这样:
SELECT * FROM profile p, user u, group g WHERE
p.u_id = u.id AND
u.group_id = g.id AND
u.date_joined >= g.date
Run Code Online (Sandbox Code Playgroud) CREATE TABLE SORDER (
C_NO CHAR(4),
P_NO CHAR(4),
QUANTITY SMALLINT,
PRIMARY KEY (C_NO, P_NO),
CONSTRAINT CNO_FK FOREIGN KEY (C_NO) REFERENCES CUSTOMER ON DELETE RESTRICT,
CONSTRAINT PNO_FK FOREIGN KEY (P_NO) REFERENCES PRODUCT2 ON DELETE RESTRICT
);
Run Code Online (Sandbox Code Playgroud)
ORA-00905:缺少关键字
这是另外两个表btw.
CREATE TABLE PRODUCT2 (
P_NO CHAR(4) PRIMARY KEY,
P_NAME CHAR(6),
PRICES DECIMAL(3,2),
STOCK SMALLINT
);
CREATE TABLE CUSTOMER2 (
C_NO CHAR(4) PRIMARY KEY,
C_NAME CHAR(6),
CITY CHAR(11)
);
Run Code Online (Sandbox Code Playgroud) 我有一个由包含列表(种类)的表组成的sql文件,然后是一个引用该表的主表(动物),如:
DROP TABLE IF EXISTS `tbl_species`;
CREATE TABLE `tbl_species` (
specie VARCHAR(10) PRIMARY KEY
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `tbl_species` VALUES ('dog');
INSERT INTO `tbl_species` VALUES ('cat');
INSERT INTO `tbl_species` VALUES ('bird');
DROP TABLE IF EXISTS `tbl_animal`;
CREATE TABLE `tbl_animal` (
id_animal INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(25) NOT NULL DEFAULT "no nombre",
specie VARCHAR(10) NOT NULL DEFAULT "dog",
FOREIGN KEY (specie) REFERENCES `tbl_species` (specie),
CONSTRAINT `uc_Info_Animal` UNIQUE (`id_animal`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
Run Code Online (Sandbox Code Playgroud)
这在sqlfiddle上工作没有问题,但是当我在服务器上执行sql文件时,我收到以下错误: …
CREATE DATABASE H;
USE H;
CREATE TABLE stu(
sid CHAR(10),
sname CHAR(10)
);
CREATE TABLE Enrolled(
sid CHAR(10),
studid CHAR(20),
cid CHAR(20),
grade CHAR(10),
PRIMARY KEY (cid),
FOREIGN KEY(sid) REFERENCES stu(sid)
);
Run Code Online (Sandbox Code Playgroud)
出现错误1215.
想知道源代码有什么问题.
关于外键引用的使用可能存在一些根本性的错误.
有人可以帮忙解决问题吗?非常感谢您的回答;)
人员表引用分支表
CREATE TABLE Staff(
StaffNo VARCHAR(5) NOT NULL,
firstName VARCHAR(15) NOT NULL UNIQUE,
lastName VARCHAR(15) NOT NULL,
position VARCHAR(10) NOT NULL,
salary INTEGER
DEFAULT 3000,
CHECK (salary BETWEEN 3000 AND 25000),
email VARCHAR(25),
branchNo CHAR(6) NOT NULL,
PRIMARY KEY (StaffNo),
FOREIGN KEY (branchNo) REFERENCES Branch (branchNo));
Run Code Online (Sandbox Code Playgroud)
同时分支表引用了Staff表
create table Branch(
branchNo char(6) not null primary key,
street varchar(30) not null,
city varchar(20),
postCode char(5) not null,
ManagerNo varchar(5) not null,
foreign key (ManagerNo) references Staff(StaffNo));
Run Code Online (Sandbox Code Playgroud) foreign-keys ×10
mysql ×6
sql ×4
constraints ×2
database ×2
oracle11g ×2
create-table ×1
django ×1
duplicates ×1
join ×1
ora-00905 ×1
postgresql ×1
python ×1
reference ×1
triggers ×1