我有一个用Postgres创建表的简单模式: CREATE TABLE IF NOT EXISTS test.table
(
id varchar(255) NOT NULL,
action varchar(255) NOT NULL,
text varchar(255) NOT NULL,
PRIMARY KEY (id, action),
CONSTRAINT fk_other FOREIGN KEY (id, action) REFERENCES test.others(action, id) ON DELET
我定义了以下5个表,并在前4个表中插入了一些记录。这是使用sqlite 3.7.1.7,并启用了外键约束。
create table if not exists subject (id varchar(50) primary key,desc varchar(100));
insert into subject (id,desc) values ("subject1","test subject");
create table if not exists subjectlevel (id_subject_id varchar(50) references su
假设我下面有两张桌子:
CREATE TABLE post (
id bigint(20) NOT NULL AUTO_INCREMENT,
text text ,
PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=1;
CREATE TABLE post_path (
ancestorid bigint(20) NOT NULL DEFAULT '0',
descendantid bigint(20) NOT NULL DEFAULT '0',
le
create table T1 (
id bigint NOT NULL primary key,
a bigint unique not null
);
create table T2 (
id int not null primary key,
b bigint,
foreign KEY(id) references T1(id) not deferrable
);
alter table T1 add constraint fk_id foreign key (id) references T2(id) not deferrable;
-
我使用PostgreSQL 13进行了这个简单的设置,最近一次进行了调试:
CREATE TABLE stop (
id INT UNIQUE,
name TEXT,
PRIMARY KEY(id)
);
CREATE TABLE line (
id INT UNIQUE,
name TEXT,
PRIMARY KEY(id)
);
CREATE TABLE line_stops_sequence(
id SERIAL PRIMARY KEY,
line
我有一张存放树木的桌子。这里有一个node_id和一个parent_id。
当我尝试以下操作时:
insert into table1 select * from table2 start with node_id = 1 connect by prior node_id = parent_id order by parent_id nulls first
我得到了这个错误:
Error starting at line 6 in command:
insert into table1 select * from table2 start with node_id = 1 connect by
今天,我在尝试将我的PSA_Landing.tblSubsDetails SubmissionID字段(目前是PK)更改为一个自动增量字段以快速测试一些无关的内容时,我遇到了这个问题。
当试图逃跑时:
ALTER TABLE `PSA_Landing`.`tblSubsDetails` CHANGE COLUMN `SubmissionID`
`SubmissionID` INT(11) NOT NULL AUTO_INCREMENT ;
我得到了错误:
ERROR 1833: Cannot change column 'SubmissionID': used in a for
我的表"Countries“也出现了同样的错误,我找到了解决方案,首先删除子表,然后删除父表。现在,我添加了更多的表,并尝试复制之前所做的操作,但都不起作用。我认为这是因为团队和用户有相互引用的外键。在底部,我修改了用户的表,添加了引用团队的外键,但即使我删除了这几行,它也不会相互引用,当我执行它时,它会给我相同的错误。错误是针对表Teams、Users和ExerciseFoci的。ExerciseFoci是父表。 /*IF OBJECT_ID('dbo.Countries', 'U') IS NOT NULL
DROP TABLE dbo.Coun
我有两个表:国家(Id,名称)和城市(Id,CountryId,Name),CountryId是城市的外键。
我需要一个触发器,以防止删除某些城市,如果国家没有被删除,换句话说,某些城市只能在国家被删除时才能被删除。
CREATE TABLE Countries
(
Id [int] IDENTITY(1,1) PRIMARY KEY NOT NULL,
Name [VARCHAR] (100) NOT NULL
);
INSERT INTO Countries VALUES ('Germany'), ('Spain'), ('It
我是MySQL的新手,我正在创建一个复杂的EER图。在创造之后,我“前进工程师.”该模型并命中可怕的错误:错误1005:无法创建表'xxx.xxx‘(errno: 121)。我创建了另一个具有1:M关系的表的简化模型,但对主键名和外键名称使用了"id_“。起作用了。
i.e.
TABLE_A
id_TABLE_A INT
TABLE_B
id_TABLE_B INT
id_TABLE_A INT
其中,TABLE_A 1--<M TABLE_B之间有一对多的关系,而TABLE_B.id_TABLE_A是外键
在查看复杂的EER图时,我注意到我对主键和外键名称
我很难让我的ON UPDATE CASCADE正确地工作,我没有语法错误,但是每当我的tableA.a1被更新时,tableB就没有变化,我也不知道发生了什么。当显示tableA时,它已经更新,但tableB没有。
这是我的代码:
CREATE TABLE tableA
(
a1 int NOT NULL,
a2 int NOT NULL,
a3 int NOT NULL,
a4 varchar(50) NOT NULL UNIQUE,
a5 TEXT,
a6 DECIMAL(38,2) NOT NULL,
CHECK (a6 >
我试图在相当并发的代码中运行Postgres UPSERT。当我的服务处于加载状态时,我一直在看到一个duplicate key value violates unique constraint错误。
作为一个简化的例子,我有下表,它有一个id主键和一个id_secondary唯一键(意思是作为第二个ID)
CREATE TABLE "test_table" (
"id" text NOT NULL,
"id_secondary" text NOT NULL,
"value" bool NOT NULL D
我试图在相当并发的代码中运行Postgres UPSERT。当我的服务处于加载状态时,我一直在看到一个duplicate key value violates unique constraint错误。
作为一个简化的例子,我有下表,它有一个id主键和一个id_secondary唯一键(意思是作为第二个ID)
CREATE TABLE "test_table" (
"id" text NOT NULL,
"id_secondary" text NOT NULL,
"value" bool NOT NULL D
考虑以下表格:
CREATE TABLE Foo
(
FooId1 int NOT NULL,
FooId2 int NOT NULL,
PRIMARY KEY(FooId1, FooId2)
);
INSERT INTO Foo(FooId1, FooId2) VALUES (1, 10), (2, 20);
CREATE TABLE Bar
(
BarId int NOT NULL PRIMARY KEY,
FooId1 int NULL,
FooId2 int NULL
);
ALTER TABLE Bar ADD CONSTRAINT FK_F
我想要创建一个包含员工、他们的工作、薪水和项目信息的数据库。
我想要保存项目成本的信息(项目的实际价值和员工投资的天数)。
对于员工和项目,每个员工通过PK约束在项目中有一个角色,并允许在将来添加一个新的角色类型(可能是“第三纪”)。
CREATE TABLE Employee(
EmployeeID INTEGER NOT NULL PRIMARY KEY,
Name VARCHAR(30) NOT NULL,
Sex CHAR(1) NOT NULL,
Address VA
create database Uzina
use Uzina
if(object_id('tUzina') is not null)
drop table tUzina
if(object_id('tDepartamente') is not null)
drop table tDepartamente
if(object_id('tSpecializari') is not null)
drop table tSpecializari
if(object_id('tAngajati') is
我正在寻找一个解决方案,使我能够有效地插入、更新或删除外键约束下的表中的数据。
这些是我的样本表:
CREATE TABLE olympic.tb_register (
athlete_id CHARACTER(7) NOT NULL,
round_number INT NOT NULL,
discipline_id INT NOT NULL,
register_date DATE NOT NULL DEFAULT CURRENT_DATE,
register_position INT DEFAULT NULL,
register_time TIME
目前,我对立即约束检查的确切时间感到困惑。希望下面的示例能够捕捉到我的困惑:
create table a (
id int primary key
);
create table b (
id int primary key,
a_id int not null references a
);
/* violates foreign key constraint "b_a_id_fkey" */
with t1 as (insert into b values (100, 200) returning id, a_id)
select * from t1;
我创建了一个约束,防止一个表中的分配超出另一个表中的库存(请参阅我的中的详细信息)。但是由于某些原因,约束只能在我插入新分配时才能正常工作,但在更新时并不能防止违反。
以下是我的限制:
([dbo].[fn_AllocationIsValid]([Itemid]) = 1)
以下是功能:
CREATE FUNCTION [dbo].[fn_AllocationIsValid] (@itemId as int)
RETURNS int AS
BEGIN
DECLARE @isValid bit;
SELECT @isValid = CASE WHEN ISNULL(SUM(Allo
例如:
create table dbo.fktest (
id int not null primary key,
val varchar(100) not null,
idparent int null)
alter table dbo.fktest add constraint FK_fktest foreign key (idparent) references fktest(id)
go
-- one row references another row, which isn't in the table at the start of the inse
原始问题:
我需要的是:
Id的自动增量值
列a和b被视为复合键
SQL:
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL';
CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET latin
我正在尝试将数据插入到表中。如果列还没有数据,我想插入行-不管其他列是什么。
CREATE TABLE t (
id INTEGER PRIMARY KEY,
name VARCHAR,
other INT
);
INSERT OR IGNORE INTO t (name) VALUES ('a');
INSERT OR IGNORE INTO t (name) VALUES ('a');
INSERT OR IGNORE INTO t (name) VALUES ('a');