我用注释标记的两个外键有什么问题?
创建数据库db; 使用db;
create table Flug(
Flugbez varchar(20),
FDatum Date,
Ziel varchar(20),
Flugzeit int,
Entfernung int,
Primary Key(Flugbez,FDatum));create table Flugzeugtyp(
Typ varchar(20),
Hersteller varchar(20),
SitzAnzahl int,
Reisegeschw int,
primary key(Typ)
);create table flugzeug(
Typ varchar(20),
SerienNr int,
AnschDatum Date,
FlugStd int,
primary key(Typ,SerienNr),
foreign key(Typ)references Flugzeugtyp(Typ));create table Abflug(
Flugbez varchar(20),
FDatum Date,
Typ varchar(20),
Seriennr int,
Kaptaen varchar(20),
Primary key(Flugbez,FDatum,Typ,SerienNr),
Foreign key(Flugbez)references Flug(Flugbez) ,
- 外键(FDatum)引用Flug(FDatum),
外键(Typ)引用Flugzeugtyp(Typ)
- ,外键(SerienNr)引用Flugzeug(SerienNr)
);
当我取消注释这些时,我得到:
ERROR 1005(HY000):无法创建表'db.abflug'(错误号:150)
我使用MySQL Server 5.5的标准安装
我正在寻找一个.NET库,用于以编程方式生成针对SQL 2008数据库的表,存储过程,视图和关系.除了原始的ADO.NET,我还有什么选择?
我正在创建一个表"InterviewTemp",在那里插入数据,用该数据更新第二个表,然后删除"InterviewTemp"表.
有一个例子:
CREATE TABLE [entrevistasTemp](
[id_usuario] [int] NULL,
[id_entrevista] [int] NULL,
[comentarios] [varchar](300) NULL
)
INSERT [entrevistasTemp] ([id_usuario], [id_entrevista], [comentarios]) VALUES (12099, 4515, CONVERT(TEXT, N'Riesgo muy alto. Marun Victoria, '))
INSERT [entrevistasTemp] ([id_usuario], [id_entrevista], [comentarios]) VALUES (15347, 4516, CONVERT(TEXT, N'Riesgo muy alto. Marun Victoria, '))
UPDATE entrevistas
set entrevistas.comentarios = entrevistasTemp.comentarios
from entrevistasTemp
WHERE entrevistas.id = entrevistasTemp.id_entrevista
drop table entrevistasTemp
Run Code Online (Sandbox Code Playgroud)
还有更好的方法吗?
编辑:只插入4.5k行
我必须在SQL Server中创建一组表.
那些是:
chips,用于识别要植入动物的芯片signals,因为每个芯片每小时产生一次信号signal receivers,如果芯片在半径范围内,可以接收信号的电台signal receivings,对于接收器已接收的信号我在创建这些表时遇到问题.
这是我的代码:
CREATE TABLE CHIPS (
ID INT PRIMARY KEY,
...(not related attributes)...
);
CREATE TABLE RECEIVERS (
ID_receiver INT PRIMARY KEY,
...(some other attributes, not related to the problem)...
);
CREATE TABLE SIGNALS (
ID_chip INT FOREIGN KEY REFERENCES CHIPS,
Signal_no INT,
Date DATETIME,
PRIMARY KEY (ID_chip, Signal_no)
);
CREATE TABLE SIGNAL_RECEIVINGS (
ID_receiver INT REFERENCES RECEIVERS ,
Id_chip INT REFERENCES SIGNALS(ID_chip),
Signal_no INT REFERENCES SIGNALS(Signal_no), …Run Code Online (Sandbox Code Playgroud) 试图在SQL Server Management Studio中向我的数据库添加一个表,但它正在摇摆不定.我确信它真的很简单,但我的大脑已经变得糊里糊涂,我找不到问题.基本上它告诉我数据库已经存在,但它显然没有.
错误(S):
消息3701,级别11,状态5,行2
不能删除表'MySchema.mix_Case_Study-Module',因为它不存在或您没有权限.消息2714,级别16,状态5,行4
数据库中已存在名为"mix_Case_Study-Module"的对象.消息1750,级别16,状态0,行4
无法创建约束.查看以前的错误.消息4902,级别16,状态1,行2
无法找到对象"MySchema.mix_Case_Study-Module",因为它不存在或您没有权限.
SQL:
USE [MyDB]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
DROP TABLE [MySchema].[mix_Case_Study-Module]
CREATE TABLE [MySchema].[mix_Case_Study-Module](
[ID] [int] IDENTITY(1,1) NOT NULL,
[Active] [bit] NOT NULL,
[Case Study ID] [int] NOT NULL,
[Module ID] [int] NOT NULL,
[Position] [int] NOT NULL,
CONSTRAINT [mix_Case_Study-Module] PRIMARY KEY CLUSTERED (
[ID] ASC
) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, …Run Code Online (Sandbox Code Playgroud) 例如:
CREATE TABLE Station
(StationCode CHAR(10) NOT NULL,
StationName CHAR(20) NOT NULL,
Distance int(5) NOT NULL,
CONSTRAINT PKStation PRIMARY KEY (StationCode) )
Run Code Online (Sandbox Code Playgroud)
它返回错误:
消息2716,级别16,状态1,行1
列,参数或变量#3:无法在数据类型int上指定列宽.
在我的大学教科书中,如果有人可以回答,该示例能够为INTEGER TQVM指定列宽
目前我有以下SELECT语句:
CREATE TABLE TEST AS
SELECT ROW_ID,
PROM_INTEG_ID,
INTEGRATION_ID,
BILL_ACCNT_ID,
SERV_ACCT_ID,
CFG_STATE_CD
FROM PRODUCTS
WHERE PROD_ID = 'TestProduct'
AND STATUS_CD = 'Active';
Run Code Online (Sandbox Code Playgroud)
但是,我必须添加一些在PRODUCTS表中不存在的其他列,并使用我自己的名称定义它们.eg HIERARCHY
我尝试在我的SQL查询中使用WITH操作数但由于语法错误而一直失败.
CREATE TABLE TEST AS
SELECT ROW_ID,
PROM_INTEG_ID,
INTEGRATION_ID,
BILL_ACCNT_ID,
SERV_ACCT_ID,
CFG_STATE_CD
WITH
PRODUCT_HEIRARCHY varchar2(30) 'Test123Value'
FROM PRODUCT
WHERE PROD_ID = 'TestProduct'
AND STATUS_CD = 'Active';
Run Code Online (Sandbox Code Playgroud)
总而言之,我想从现有表中提取列以及定义自己的列.
任何帮助赞赏
我正在使用oracle 10g ex来学习,所以这里是我的代码
CREATE TABLE MINE
(
NAME VARCHAR(10),
ID INT(3) PRIMARY KEY
);
Run Code Online (Sandbox Code Playgroud)
而我的错误是
ORA-00907:缺少右括号.
但我没有错过正确的括号.要解决这个问题,我还有其他任何机会或事情要知道.
我发现create table语句没有识别我要插入的通配符.我怎样才能在golang中使用预先准备好的语句?
stmt, err := tx.Prepare(`
CREATE TABLE table_number_$1 (
guid character varying(64) NOT NULL,
number integer,
name character varying(64),
PRIMARY KEY (guid),
CONSTRAINT some_onstraint
CHECK ((number = $2))
)`)
if err != nil {
return err
}
defer stmt.Close()
if _, err := stmt.Exec(
string(table_number),
table_number; err != nil {
tx.Rollback()
return err
}
Run Code Online (Sandbox Code Playgroud)
我打印出来的错误是:
sql: expected 0 arguments, got 2
编辑:显然我知道我可以像平常一样构建字符串,但是想知道是否有内置方式.
我正在尝试使用ORDER BY在SQL中创建一个volatile表,我收到一个错误.
CREATE VOLATILE TABLE orderd_dates AS
(SELECT * FROM date_table
ORDER BY id_date)
with data primary index (id_date) on commit preserve rows;
Run Code Online (Sandbox Code Playgroud)
错误是:子查询中不允许ORDER BY.
如果我不能使用order by,如何创建一个有序的易失性表?
create-table ×10
sql ×6
sql-server ×4
foreign-keys ×2
oracle ×2
.net ×1
ado.net ×1
ddl ×1
go ×1
mysql ×1
postgresql ×1
sql-drop ×1
sql-order-by ×1
ssms ×1
subquery ×1
syntax-error ×1
t-sql ×1
teradata ×1