sql - 在一个查询中创建所有数据库“事物”
问题描述
因此,我设计了一个“CD 商店数据库”并尝试为其所有元素编写一个查询,但由于某种原因,我无法在一个查询中创建表并将其添加到该数据库。这是我的查询:
CREATE DATABASE CDCI
ON PRIMARY(
Name = cddukkan_data,
FileName = 'C:\Program Files\Microsoft SQL Server\MSSQL14.VERITABANIM\MSSQL\DATA\cdci.mdf',
Size = 16 MB,
FileGrowth = 1 MB,
MaxSize = 1 GB
)
LOG ON(
Name = cddukkan_log,
FileName = 'C:\Program Files\Microsoft SQL Server\MSSQL14.VERITABANIM\MSSQL\DATA\cdci.ldf',
Size = 8 MB,
FileGrowth = 5%,
MaxSize = 512 MB
)
USE CDCI >An error occurs here
GO
CREATE TABLE Turler(
TurID INT IDENTITY(1, 1) NOT NULL,
TurAdi NVARCHAR(10) NOT NULL,
PRIMARY KEY(TurID),
UNIQUE(TurID)
)
CREATE TABLE Yonetmenler(
YonetmenID INT IDENTITY(1, 1) NOT NULL,
YonetmenAdi NVARCHAR(10) NOT NULL,
YonetmenSoyadi NVARCHAR(10) NULL,
DogumYili NCHAR(4),
CONSTRAINT DogumYili CHECK(DogumYili LIKE '19__' OR (DogumYili LIKE '20__' AND DogumYili < (YEAR(GETDATE()) - 18))),
Cinsiyet NCHAR(5),
CONSTRAINT Cinsiyet CHECK(Cinsiyet LIKE '[Ee]%' OR Cinsiyet LIKE '[Kk]%'),
PRIMARY KEY(YonetmenID),
UNIQUE(YonetmenID)
)
CREATE TABLE Raflar(
RafID INT IDENTITY(1, 1) NOT NULL,
RafTuru INT FOREIGN KEY REFERENCES Turler(TurID) NOT NULL,
PRIMARY KEY(RafID),
UNIQUE(RafID)
)
CREATE TABLE Filmler(
FilmID INT IDENTITY(1, 1) NOT NULL,
FilmAdi NVARCHAR(10) NOT NULL,
TurID INT FOREIGN KEY REFERENCES Turler(TurID) NOT NULL,
YonetmenID INT FOREIGN KEY REFERENCES Yonetmenler(YonetmenID) NOT NULL,
RafID INT FOREIGN KEY REFERENCES Raflar(RafID) NOT NULL,
Fiyat MONEY NOT NULL,
PRIMARY KEY(FilmID),
UNIQUE(FilmID)
)
CREATE TABLE Musteriler(
MusteriID INT IDENTITY(1, 1) NOT NULL,
MusteriAdi NVARCHAR(10) NOT NULL,
MusteriSoyadi NVARCHAR(10) NOT NULL,
Adresi NVARCHAR(20),
Telefon NVARCHAR(10),
CONSTRAINT Telefon CHECK(Telefon NOT LIKE '0%'),
PRIMARY KEY(MusteriID)
)
CREATE TABLE Oyuncular(
OyuncuID INT IDENTITY(1, 1) NOT NULL,
OyuncuAdi NVARCHAR(10) NOT NULL,
OyuncuSoyadi NVARCHAR(10) NULL,
DogumYili NCHAR(4),
CONSTRAINT DogumYili CHECK(DogumYili LIKE '19%' OR DogumYili < YEAR(GETDATE())),
PRIMARY KEY(OyuncuID),
UNIQUE(OyuncuID)
)
CREATE TABLE Satislar(
SatisID INT IDENTITY(1, 1) NOT NULL,
FilmID INT FOREIGN KEY REFERENCES Filmler(FilmID) NOT NULL,
MusteriID INT FOREIGN KEY REFERENCES Musteriler(MusteriID) NOT NULL,
SatisAdedi INT NOT NULL
)
CREATE TABLE FilmOyuncu(
FilmID INT FOREIGN KEY REFERENCES Filmler(FilmID) NOT NULL,
OyuncuID INT FOREIGN KEY REFERENCES Oyuncular(OyuncuID) NOT NULL
)
USE CDCI >An error occurs here
GO
CREATE TRIGGER [TelefonKontrol]
ON [Musteriler]
FOR INSERT
AS
DECLARE @tel NVARCHAR(10)
SELECT @tel = Telefon FROM INSERTED
IF @tel LIKE '0%'
BEGIN
PRINT 'Lütfen telefon numarasýný baþýna 0 rakamý koymayýnýz.'
ROLLBACK TRAN
END
GO
CREATE TRIGGER [FilmRafTuruUyumu]
ON [Filmler]
FOR INSERT
AS
DECLARE @filmTuru NVARCHAR(10)
DECLARE @rafTuru NVARCHAR(10)
DECLARE @rafID NVARCHAR(10)
SELECT @rafID = RafID FROM INSERTED
SELECT @filmTuru = TurID FROM INSERTED
SELECT @rafTuru = Raflar.RafTuru FROM INSERTED
INNER JOIN Raflar ON Raflar.RafID = @rafID
IF @rafTuru <> @filmTuru
BEGIN
PRINT 'Lütfen film uygun rafa yerleþtiriniz!'
ROLLBACK TRAN
END
GO
注意:我对数据库的东西并不陌生,因为我有一些类,但那些是非常基本的级别和基于理论的类。因此,您可以将我视为“首发”。任何帮助、提示和建议都会被应用!
解决方案
您需要检查 mdf 和 ldf 文件的位置路径。
CREATE DATABASE CDCI
ON PRIMARY(
Name = cddukkan_data,
FileName = 'C:\Program Files\Microsoft SQL Server\MSSQL14.VERITABANIM\MSSQL\DATA\cdci.mdf',
Size = 16 MB,
FileGrowth = 1 MB,
MaxSize = 1 GB
)
LOG ON(
Name = cddukkan_log,
FileName = 'C:\Program Files\Microsoft SQL Server\MSSQL14.VERITABANIM\MSSQL\DATA\cdci.ldf',
Size = 8 MB,
FileGrowth = 5%,
MaxSize = 512 MB
)
go
USE CDCI -->An error occurs here
GO
CREATE TABLE Turler(
TurID INT IDENTITY(1, 1) NOT NULL,
TurAdi NVARCHAR(10) NOT NULL,
PRIMARY KEY(TurID),
UNIQUE(TurID)
)
CREATE TABLE Yonetmenler(
YonetmenID INT IDENTITY(1, 1) NOT NULL,
YonetmenAdi NVARCHAR(10) NOT NULL,
YonetmenSoyadi NVARCHAR(10) NULL,
DogumYili NCHAR(4),
CONSTRAINT DogumYili CHECK(DogumYili LIKE '19__' OR (DogumYili LIKE '20__' AND DogumYili < (YEAR(GETDATE()) - 18))),
Cinsiyet NCHAR(5),
CONSTRAINT Cinsiyet CHECK(Cinsiyet LIKE '[Ee]%' OR Cinsiyet LIKE '[Kk]%'),
PRIMARY KEY(YonetmenID),
UNIQUE(YonetmenID)
)
CREATE TABLE Raflar(
RafID INT IDENTITY(1, 1) NOT NULL,
RafTuru INT FOREIGN KEY REFERENCES Turler(TurID) NOT NULL,
PRIMARY KEY(RafID),
UNIQUE(RafID)
)
CREATE TABLE Filmler(
FilmID INT IDENTITY(1, 1) NOT NULL,
FilmAdi NVARCHAR(10) NOT NULL,
TurID INT FOREIGN KEY REFERENCES Turler(TurID) NOT NULL,
YonetmenID INT FOREIGN KEY REFERENCES Yonetmenler(YonetmenID) NOT NULL,
RafID INT FOREIGN KEY REFERENCES Raflar(RafID) NOT NULL,
Fiyat MONEY NOT NULL,
PRIMARY KEY(FilmID),
UNIQUE(FilmID)
)
CREATE TABLE Musteriler(
MusteriID INT IDENTITY(1, 1) NOT NULL,
MusteriAdi NVARCHAR(10) NOT NULL,
MusteriSoyadi NVARCHAR(10) NOT NULL,
Adresi NVARCHAR(20),
Telefon NVARCHAR(10),
CONSTRAINT Telefon CHECK(Telefon NOT LIKE '0%'),
PRIMARY KEY(MusteriID)
)
CREATE TABLE Oyuncular(
OyuncuID INT IDENTITY(1, 1) NOT NULL,
OyuncuAdi NVARCHAR(10) NOT NULL,
OyuncuSoyadi NVARCHAR(10) NULL,
DogumYili NCHAR(4),
CONSTRAINT DogumYili CHECK(DogumYili LIKE '19%' OR DogumYili < YEAR(GETDATE())),
PRIMARY KEY(OyuncuID),
UNIQUE(OyuncuID)
)
CREATE TABLE Satislar(
SatisID INT IDENTITY(1, 1) NOT NULL,
FilmID INT FOREIGN KEY REFERENCES Filmler(FilmID) NOT NULL,
MusteriID INT FOREIGN KEY REFERENCES Musteriler(MusteriID) NOT NULL,
SatisAdedi INT NOT NULL
)
CREATE TABLE FilmOyuncu(
FilmID INT FOREIGN KEY REFERENCES Filmler(FilmID) NOT NULL,
OyuncuID INT FOREIGN KEY REFERENCES Oyuncular(OyuncuID) NOT NULL
)
USE CDCI -->An error occurs here
GO
CREATE TRIGGER [TelefonKontrol]
ON [Musteriler]
FOR INSERT
AS
DECLARE @tel NVARCHAR(10)
SELECT @tel = Telefon FROM INSERTED
IF @tel LIKE '0%'
BEGIN
PRINT 'Lütfen telefon numarasýný baþýna 0 rakamý koymayýnýz.'
ROLLBACK TRAN
END
GO
CREATE TRIGGER [FilmRafTuruUyumu]
ON [Filmler]
FOR INSERT
AS
DECLARE @filmTuru NVARCHAR(10)
DECLARE @rafTuru NVARCHAR(10)
DECLARE @rafID NVARCHAR(10)
SELECT @rafID = RafID FROM INSERTED
SELECT @filmTuru = TurID FROM INSERTED
SELECT @rafTuru = Raflar.RafTuru FROM INSERTED
INNER JOIN Raflar ON Raflar.RafID = @rafID
IF @rafTuru <> @filmTuru
BEGIN
PRINT 'Lütfen film uygun rafa yerleþtiriniz!'
ROLLBACK TRAN
END
GO
推荐阅读
- client - kcadm 创建的客户端总是未经授权的
- java - 优化坐标距离计算
- c# - 如何相对于西方旋转销?
- java - 如何从 IntelliJ 中的 Spark log4j-defaults.properties 文件中过滤日志
- java - Java Spring boot kafka从带有偏移量的主题中删除消息
- webstorm - WebStorm 中的默认 JS/HTML 格式化程序是什么?
- django - 当我用 HyperlinkedModelSerializer 替换 ModelSerializer 时,Django Rest,引发此错误
- php - 如何通过从结果中减去数字来计算嵌套关系和附加字段
- php - PHP的关联数组问题
- codeigniter - 为什么会话自动/随机过期或使用 https 注销站点?